home *** CD-ROM | disk | FTP | other *** search
/ Chip 2006 July / CHIP 2006-07.2.iso / program / web_gelistirme / easyphp1-7_setup.exe / {app} / phpmyadmin / Documentation.txt < prev    next >
Encoding:
Text File  |  2003-09-07  |  123.2 KB  |  2,634 lines

  1.  
  2.    ______________________________________________________________________
  3.    
  4.    Top  -  Requirements  -  Introduction  -  Installation  -
  5.    Configuration
  6.    Transformations  -  FAQ  -  Developers  -  Credits  -  Translators
  7.    ______________________________________________________________________
  8.    
  9.                         phpMyAdmin 2.5.3 Documentation
  10.                                        
  11.      * SourceForge phpMyAdmin project page   [ http://www.phpmyadmin.net/
  12.        ] 
  13.      * Local documents:
  14.           + Version history: ChangeLog
  15.           + General notes: README
  16.           + License: LICENSE
  17.      * Documentation version: $Id: Documentation.html,v 1.493.2.4
  18.        2003/09/07 20:21:14 lem9 Exp $
  19.        
  20. Requirements
  21.  
  22.      * PHP3, PHP4 or PHP5: phpMyAdmin widely uses the 'str_replace()' PHP
  23.        function that was added in PHP 3.0.6, but was buggy up until
  24.        PHP 3.0.8. Then you should not run this script with PHP3 < 3.0.8.
  25.        PHP also needs to be compiled with MySQL support;
  26.        If you want to display inline thumbnails of JPEGs with the
  27.        original aspect ratio, you also need GD2 support in PHP.
  28.      * MySQL 3.21 or newer (details);
  29.      * a web-browser (doh!).
  30.        
  31. Introduction
  32.  
  33.    phpMyAdmin can manage a whole MySQL server (needs a super-user) as
  34.    well as a single database. To accomplish the latter you'll need a
  35.    properly set up MySQL user who can read/write only the desired
  36.    database. It's up to you to look up the appropriate part in the MySQL
  37.    manual.
  38.    Currently phpMyAdmin can:
  39.      * create and drop databases
  40.      * create, copy, drop, rename and alter tables
  41.      * do table maintenance
  42.      * delete, edit and add fields
  43.      * execute any SQL-statement, even batch-queries
  44.      * manage keys on fields
  45.      * load text files into tables
  46.      * create (*) and read dumps of tables
  47.      * export (*) data to CSV, XML and Latex formats
  48.      * administer multiple servers
  49.      * manage MySQL users and privileges
  50.      * check referential integrity
  51.      * using Query-by-example (QBE), create complex queries automatically
  52.        connecting required tables
  53.      * create PDF graphics of your Database layout
  54.      * search globally in a database or a subset of it
  55.      * transform stored data into any format using a set of predefined
  56.        functions, like displaying BLOB-data as image or download-link or
  57.        ...
  58.      * communicate in 42 different languages
  59.        
  60.    (*)  phpMyAdmin can compress (Zip, GZip -RFC 1952- or Bzip2 formats)
  61.    dumps and CSV exports if you use PHP4 >= 4.0.4 with Zlib support
  62.    (--with-zlib) and/or Bzip2 support (--with-bz2).
  63.    
  64. Installation
  65.  
  66.    NOTE: phpMyAdmin does not apply any special security methods to the
  67.    MySQL database server. It is still the system administrator's job to
  68.    grant permissions on the MySQL databases properly. phpMyAdmin's
  69.    "Privileges" page can be used for this.
  70.    
  71.    Warning for Mac users:if you are on a MacOS version before OS X,
  72.    StuffIt unstuffs with Mac formats.
  73.    So you'll have to resave as in BBEdit to Unix style ALL phpMyAdmin
  74.    scripts before uploading them to your server, as PHP seems not to like
  75.    Mac-style end of lines character ("\r").
  76.    
  77.    Documentation warning: when you see in this document a .php3 file
  78.    extension, please transpose to .php if you are using a kit with files
  79.    having this extension.
  80.    
  81.    Quick Install:
  82.     1. Choose and download a distribution kit with the files having the
  83.        extension (.php3 or .php) depending on the way your web/PHP server
  84.        interprets those extensions.
  85.     2. Untar or unzip the distribution (be sure to unzip the
  86.        subdirectories): tar -xzvf phpMyAdmin_x.x.x.tar.gz in your
  87.        webserver's document root. If you don't have direct access to your
  88.        document root, put the files in a directory on your local machine,
  89.        and, after step 3, transfer the directory on your web server
  90.        using, for example, ftp.
  91.     3. Open the file config.inc.php3 in your favorite editor and change
  92.        the values for host, user, password and authentication mode to fit
  93.        your environment. Here, "host" means the MySQL server. Also insert
  94.        the correct value for $cfg['PmaAbsoluteUri']. Have a look at
  95.        Configuration section for an explanation of all values.
  96.     4. It is recommended that you protect the directory in which you
  97.        installed phpMyAdmin (unless it's on a closed intranet, or you
  98.        wish to use HTTP or cookie authentication), for example with
  99.        HTTP-AUTH (in a .htaccess file). See the FAQ section for
  100.        additional information.
  101.     5. Open the file <www.your-host.com>/<your-install-dir>/index.php3 in
  102.        your browser. phpMyAdmin should now display a welcome screen and
  103.        your databases, or a login dialog if using HTTP or cookie
  104.        authentication mode.
  105.     6. For a whole set of new features (bookmarks, comments, SQL-history,
  106.        PDF-generation, field contents transformation, etc.) you need to
  107.        create a set of tables in your database. Please look at your
  108.        scripts/ directory, where you should find a file called
  109.        create_tables.sql. (If you are using a Windows server, pay special
  110.        attention to FAQ 1.23). You can already use your phpMyAdmin to
  111.        create the tables for you. Please be aware that you may have to
  112.        have special (administrator) privileges to create the database and
  113.        tables. After having imported the create_tables.sql file, you
  114.        should specify the table names in your config.inc.php3 file. The
  115.        directives used for that can be found in the Configuration
  116.        section.
  117.        
  118.    Upgrading from an older version:
  119.      * Please do not copy your older config.inc.php3 over the new one: it
  120.        may offer new configuration variables, and the new version may
  121.        depend on these for normal behavior. It is suggested instead to
  122.        insert your site values in the new one.
  123.        
  124.    Using authentication modes:
  125.      * HTTP and cookie authentication modes are recommended in a
  126.        multi-user environment where you want to give users access to
  127.        their own database and don't want them to play around with others.
  128.        Nevertheless be aware that MS Internet Explorer seems to be really
  129.        buggy about cookies, at least till version 6. And PHP 4.1.1 is
  130.        also a bit buggy in this area!
  131.        Even in a single-user environment, you might prefer to use HTTP or
  132.        cookie mode so that your user/password pair are not in clear in
  133.        the configuration file.
  134.      * HTTP and cookie authentication modes are more secure: the MySQL
  135.        password does not need to be set in the phpMyAdmin configuration
  136.        file (except for the "controluser" -see the Configuration
  137.        section).
  138.        However, keep in mind that the password travels in plain text,
  139.        unless you are using the HTTPS protocol.
  140.        In cookie mode, the password is stored, encrypted with the
  141.        blowfish algorithm, in a temporary cookie.
  142.      * For 'HTTP' and 'cookie' modes, phpMyAdmin needs a controluser that
  143.        has only the SELECT privilege on the mysql.user (all columns
  144.        except "Password"), mysql.db (all columns) & mysql.tables_priv
  145.        (all columns except "Grantor" & "Timestamp") tables.
  146.        You must specify the details for the controluser in the
  147.        config.inc.php3 file under the $cfg['Servers'][$i]['controluser']&
  148.        $cfg['Servers'][$i]['controlpass'] settings.
  149.        The following example assumes you want to use pma as the
  150.        controluser and pmapass as the controlpass, but this is only an
  151.        example: use something else in your file!
  152.        Of course you have to replace localhost by the webserver's host if
  153.        it's not the same as the MySQL server's one.
  154.  
  155. GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
  156. GRANT SELECT (
  157.     Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
  158.     Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
  159.     File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
  160.     Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
  161.     Execute_priv, Repl_slave_priv, Repl_client_priv
  162.     ) ON mysql.user TO 'pma'@'localhost';
  163. GRANT SELECT ON mysql.db TO 'pma'@'localhost';
  164. GRANT SELECT ON mysql.host TO 'pma'@'localhost';
  165. GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
  166.     ON mysql.tables_priv TO 'pma'@'localhost';
  167.  
  168.        If you are using an old MySQL version (below 4.0.2), please use
  169.        this query instead of the second one:
  170.  
  171. GRANT SELECT (
  172.     Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
  173.     Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
  174.     File_priv, Grant_priv, References_priv, Index_priv, Alter_priv
  175.     ) ON mysql.user TO 'pma'@'localhost';
  176.  
  177.        ... and if you want to use the many new relation and bookmark
  178.        features:
  179.  
  180. GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
  181.  
  182.        (this of course requires you to have a special DB for phpMyAdmin,
  183.        the contents will be explained later)
  184.        Of course, the above queries only work if your MySQL version
  185.        supports the GRANT command. This is the case since 3.22.11.
  186.      * Then each of the true users should be granted a set of privileges
  187.        on a set of particular databases. Normally you shouldn't give
  188.        global privileges to an ordinary user, unless you understand the
  189.        impact of those privileges (for example, you are creating a
  190.        superuser).
  191.        For example, to grant the user real_user with all privileges on
  192.        the database user_base:
  193.           GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost
  194.        IDENTIFIED BY 'real_password';
  195.        What the user may now do is controlled entirely by the MySQL user
  196.        management system.
  197.        With HTTP or cookie authentication mode, you don't need to fill
  198.        the user/password fields inside the $cfg['Servers'] array.
  199.        
  200.    'http' authentication mode:
  201.      * Was called 'advanced' in versions before 2.2.3.
  202.      * Introduced in 1.3.0, it uses Basic HTTP authentication method and
  203.        allows you to login as any valid MySQL user.
  204.      * Is only supported with PHP running as an Apache module, not with
  205.        CGI.
  206.        
  207.    'cookie' authentication mode:
  208.      * You can use this method as a replacement for the HTTP
  209.        authentication (for example, if you're running IIS).
  210.      * Obviously, the user must enable cookies in the browser.
  211.      * With this mode, the use can truly logout of phpMyAdmin and login
  212.        back with the same username.
  213.        
  214.    'config' authentication mode:
  215.      * This mode is the less secure one because it requires you to fill
  216.        the $cfg['Servers'][$i]['user'] and
  217.        $cfg['Servers'][$i]['password'] fields.
  218.        But you don't need to setup a "controluser" here: using the
  219.        $cfg['Servers'][$i]['only_db'] might be enough.
  220.      * In the ISP FAQ section, there is an entry explaining how to
  221.        protect your configuration file.
  222.      * For additional security in this mode, you may wish to consider the
  223.        Host authentication $cfg['Servers'][$i]['AllowDeny']['order'] and
  224.        $cfg['Servers'][$i]['AllowDeny']['rules'] configuration
  225.        directives.
  226.        
  227. Configuration
  228.  
  229.    Warning for Mac users: PHP seems not to like Mac end of lines
  230.    character ("\r"). So ensure you choose the option that allows to use
  231.    the *nix end of line character ("\n") in your text editor before
  232.    registering a script you have modified.
  233.    
  234.    All configurable data is placed in config.inc.php3.
  235.    
  236.    $cfg['PmaAbsoluteUri'] string
  237.           Sets here the complete URL (with full path) to your phpMyAdmin
  238.           version. E.g.
  239.           http://www.your_web.net/path_to_your_phpMyAdmin_directory/.
  240.           phpMyAdmin needs this setting, because of requirements of the
  241.           HTTP protocol, explained in RFC2616, section 14.30.
  242.           Don't forget the slash at the end of your URL. The URL must
  243.           contain characters that are valid for a URL, and on some
  244.           servers, the path is case-sensitive.
  245.           Starting with version 2.3.0, you can try to leave this
  246.           parameter empty, because the program tries to auto-detect its
  247.           proper value. Additional details are in the configuration file.
  248.           Alternatively, this setting can be dynamically completed. For
  249.           example, you can try to use such a kind of code:
  250.           
  251. $cfg['PmaAbsoluteUri'] = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'
  252.                        . $_SERVER['HTTP_HOST']
  253.                        . (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
  254.                        . substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')+1);
  255.  
  256.     or
  257.  
  258. $cfg['PmaAbsoluteUri'] = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'
  259.                        . $_SERVER['SERVER_NAME']
  260.                        . (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
  261.                        . substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/')+1);
  262.  
  263.  
  264.           Please note that the $_SERVER array doesn't exist in
  265.           PHP < 4.1.0. Try to replace $_SERVER by $HTTP_SERVER_VARS or
  266.           $GLOBALS in this case.
  267.           
  268.    $cfg['PmaAbsoluteUri_DisableWarning'] boolean
  269.           By default, when you leave $cfg['PmaAbsoluteUri'] empty, and
  270.           the system detects your absolute URI automatically, we display
  271.           a warning to remind you. If you have tested the automatic
  272.           detection, and it works perfectly for your setup, then you can
  273.           set this variable to squelch the warning.
  274.           
  275.    $cfg['PmaNoRelation_DisableWarning'] boolean
  276.           Starting with version 2.3.0 phpMyAdmin offers a lot of features
  277.           to work with master / foreign - tables (see
  278.           $cfg['Servers'][$i]['pmadb']).
  279.           If you tried to set this up and it does not work for you, have
  280.           a look on the "Structure" page of one database where you would
  281.           like to use it. You will find a link that will analyze why
  282.           those features have been disabled.
  283.           If you do not want to use those features set this variable to
  284.           TRUE to stop this message from appearing.
  285.           
  286.    $cfg['blowfish_secret'] string
  287.           Starting with version 2.5.2, the 'cookie' auth_type uses
  288.           blowfish algorithm to encrypt the password.
  289.           If at least one server configuration uses 'cookie' auth_type,
  290.           enter here a passphrase that will be used by blowfish.
  291.           
  292.    $cfg['Servers'] array
  293.           Since version 1.4.2, phpMyAdmin supports the administration of
  294.           multiple MySQL servers. Therefore, a $cfg['Servers']-array has
  295.           been added which contains the login information for the
  296.           different servers. The first $cfg['Servers'][$i]['host']
  297.           contains the hostname of the first server, the second
  298.           $cfg['Servers'][$i]['host'] the hostname of the second server,
  299.           etc. If you have only one server to administer, simply leave
  300.           free the hostname of the other $cfg['Server']-entries.
  301.           
  302.    $cfg['Servers'][$i]['host'] string
  303.           The hostname or IP address of your $i-th MySQL-server. E.g.
  304.           localhost.
  305.           
  306.    $cfg['Servers'][$i]['port'] string
  307.           The port-number of your $i-th MySQL-server. Default is 3306
  308.           (leave blank). If you use "localhost" as the hostname, MySQL
  309.           ignores this port number and connects with the socket, so if
  310.           you want to connect to a port different from the default port,
  311.           use "127.0.0.1" or the real hostname in
  312.           $cfg['Servers'][$i]['host'].
  313.           
  314.    $cfg['Servers'][$i]['socket'] string
  315.           The path to the socket to use. Leave blank for default.
  316.           To use the socket feature you must run PHP 3.0.10 or more.
  317.           
  318.    $cfg['Servers'][$i]['connect_type'] string
  319.           What type connection to use with the MySQL server. Your options
  320.           are 'socket' & 'tcp'. It defaults to 'tcp' as that is nearly
  321.           guaranteed to be available on all MySQL servers, while sockets
  322.           are not supported on some platforms.
  323.           To use the socket mode, your MySQL server must be on the same
  324.           machine as the Web server.
  325.           
  326.    $cfg['Servers'][$i]['compress'] boolean
  327.           Whether to use a compressed protocol for the MySQL server
  328.           connection or not (experimental).
  329.           This feature requires PHP >= 4.3.0.
  330.           
  331.    $cfg['Servers'][$i]['controluser'] string
  332.           $cfg['Servers'][$i]['controlpass'] string
  333.           When using HTTP or cookie authentication modes (or 'config'
  334.           authentication mode since phpMyAdmin 2.2.1), you need to supply
  335.           the details of a MySQL account that has SELECT privilege on the
  336.           mysql.user (all columns except "Password"), mysql.db (all
  337.           columns) & mysql.tables_priv (all columns except "Grantor" &
  338.           "Timestamp") tables. This account is used to check what
  339.           databases the user will see at login.
  340.           Please see the install section on "Using HTTP authentication"
  341.           for more information.
  342.           Note that if you try login to phpMyAdmin with this
  343.           "controluser", you could get some errors, depending the exact
  344.           privileges you gave to the "controluser". phpMyAdmin does not
  345.           support a direct login with the "controluser".
  346.           In versions before 2.2.5, those were called "stduser/stdpass".
  347.           
  348.    $cfg['Servers'][$i]['auth_type'] string ['http'|'cookie'|'config']
  349.           Whether config or cookie or http authentication should be used
  350.           for this server.
  351.           
  352.           + 'config' authentication ($auth_type = 'config') is the plain
  353.             old way: username and password are stored in config.inc.php3.
  354.           + 'cookie' authentication mode ($auth_type = 'cookie') as
  355.             introduced in 2.2.3 allows you to log in as any valid MySQL
  356.             user with the help of... cookies. Log name and password are
  357.             stored in cookies during the session and password is deleted
  358.             when it ends.
  359.           + 'http' authentication (was called 'advanced' in older
  360.             versions) ($auth_type = 'http') as introduced in 1.3.0 allows
  361.             you to log in as any valid MySQL user via HTTP-Auth.
  362.             
  363.           Please see the install section on "Using authentication modes"
  364.           for more information.
  365.           
  366.    $cfg['Servers'][$i]['user'] string
  367.           $cfg['Servers'][$i]['password'] string
  368.           The user/password-pair which phpMyAdmin will use to connect to
  369.           this MySQL-server. This user/password pair is not needed when
  370.           HTTP or cookie authentication is used, and should be empty.
  371.           
  372.    $cfg['Servers'][$i]['only_db'] string or array
  373.           If set to a(an array of) database name(s), only this(these)
  374.           database(s) will be shown to the user. Since phpMyAdmin 2.2.1,
  375.           this/these database(s) name(s) may contain MySQL wildcards
  376.           characters ("_" and "%"): if you want to use literal instances
  377.           of these characters, escape them (I.E. use 'my\_db' and not
  378.           'my_db').
  379.           This setting is an efficient way to lower the server charge
  380.           since the latter does not need to send MySQL requests to build
  381.           the available database list. But it does not replace the
  382.           privileges rules of the MySQL database server. If set, it just
  383.           means only these databases will be displayed but not at all
  384.           other databases can't be used.
  385.           An example of using more that one database:
  386.           $cfg['Servers'][$i]['only_db'] = array('db1', 'db2');
  387.           
  388.    $cfg['Servers'][$i]['verbose'] string
  389.           Only useful when using phpMyAdmin with multiple server entries.
  390.           If set, this string will be displayed instead of the hostname
  391.           in the pull-down menu on the main page. This can be useful if
  392.           you want to show only certain databases on your system, for
  393.           example.
  394.           
  395.    $cfg['Servers'][$i]['pmadb'] string
  396.           Starting with version 2.3.0 phpMyAdmin offers a lot of features
  397.           to work with master / foreign - tables. To use those as well as
  398.           the bookmark feature you need special tables with a predefined
  399.           structure, which we explain below.
  400.           See the Quick Install section in this document for a quick way
  401.           of creating those tables. Also, if you are using a Windows
  402.           server, read FAQ 1.23.
  403.           If you are the only user of this phpMyAdmin installation, you
  404.           can use your current database to store those special tables; in
  405.           this case, just put your current database name in
  406.           $cfg['Servers'][$i]['pmadb'].
  407.           If you are setting up a multi-user phpMyAdmin installation, you
  408.           will need to create a new database and setup special
  409.           privileges, so, as superuser:
  410.           
  411.           + create a new database for phpMyAdmin:
  412.               CREATE DATABASE phpmyadmin;
  413.             Note that "controluser" must have SELECT, INSERT, UPDATE and
  414.             DELETE privileges on this database. Here is a query to set up
  415.             those privileges (using "phpmyadmin" as the database name,
  416.             and "pma" as the controluser):
  417.               GRANT SELECT,INSERT,UPDATE,DELETE ON phpmyadmin.* to
  418.             'pma'@'localhost';
  419.             do not give any other user rights on this database.
  420.           + enter the database name in $cfg['Servers'][$i]['pmadb']
  421.             
  422.    $cfg['Servers'][$i]['bookmarktable'] string
  423.           Since release 2.2.0 phpMyAdmin allows to bookmark queries. This
  424.           can be useful for queries you often run.
  425.           To allow the usage of this functionality you have to:
  426.           
  427.           + set up "pmadb" as described above
  428.           + within this database create a table following this scheme:
  429.                  CREATE TABLE `PMA_bookmark` (
  430.                    id int(11) DEFAULT '0' NOT NULL auto_increment,
  431.                    dbase varchar(255) NOT NULL,
  432.                    user varchar(255) NOT NULL,
  433.                    label varchar(255) NOT NULL,
  434.                    query text NOT NULL,
  435.                    PRIMARY KEY (id)
  436.                  ) TYPE=MyISAM COMMENT='Bookmarks';
  437.           + enter the table name in $cfg['Servers'][$i]['bookmarktable']
  438.             
  439.    $cfg['Servers'][$i]['relation'] string
  440.           Since release 2.2.4 you can describe, in a special 'relation'
  441.           table, which field is a key in another table (a foreign key).
  442.           phpMyAdmin currently uses this to
  443.           
  444.           + make clickable, when you browse the master table, the data
  445.             values that point to the foreign table;
  446.           + display in an optional tool-tip the "display field" when
  447.             browsing the master table, if you move the mouse to a column
  448.             containing a foreign key (use also the 'table_info' table);
  449.             (see FAQ 6.7)
  450.           + in edit/insert mode, display a drop-down list of possible
  451.             foreign keys (key value and "display field" are shown)
  452.             (see FAQ 6.21)
  453.           + display links on the table properties page, to check
  454.             referential integrity (display missing foreign keys) for each
  455.             described key;
  456.           + in query-by-example, create automatic joins (see FAQ 6.6)
  457.           + enable you to get a PDF schema of your database (also uses
  458.             the table_coords table).
  459.             
  460.           The keys can be numeric or character.
  461.           To allow the usage of this functionality the superuser has to:
  462.           
  463.           + set up "pmadb" as described above
  464.           + within this database create a table following this scheme:
  465.                  CREATE TABLE `PMA_relation` (
  466.                    `master_db` varchar(64) NOT NULL default '',
  467.                    `master_table` varchar(64) NOT NULL default '',
  468.                    `master_field` varchar(64) NOT NULL default '',
  469.                    `foreign_db` varchar(64) NOT NULL default '',
  470.                    `foreign_table` varchar(64) NOT NULL default '',
  471.                    `foreign_field` varchar(64) NOT NULL default '',
  472.                    PRIMARY KEY (`master_db`, `master_table`,
  473.             `master_field`),
  474.                    KEY foreign_field (foreign_db, foreign_table)
  475.                  ) TYPE=MyISAM COMMENT='Relation table';
  476.           + put the relation table name in
  477.             $cfg['Servers'][$i]['relation']
  478.           + now as normal user open phpMyAdmin and for each one of your
  479.             tables where you want to use this feature, click
  480.             "Structure/Relation view/" and choose foreign fields.
  481.             
  482.           Please note that in the current (2.3.0) version, master_db must
  483.           be the same as foreign_db. Those fields have been put in future
  484.           development of the cross-db relations.
  485.           
  486.    $cfg['Servers'][$i]['table_info'] string
  487.           Since release 2.3.0 you can describe, in a special 'table_info'
  488.           table, which field is to be displayed as a tool-tip when moving
  489.           the cursor over the corresponding key.
  490.           This configuration variable will hold the name of this special
  491.           table. To allow the usage of this functionality the superuser
  492.           has to:
  493.           
  494.           + set up "pmadb" as described above
  495.           + within this database create a table following this scheme:
  496.                  CREATE TABLE `PMA_table_info` (
  497.                    `db_name` varchar(64) NOT NULL default '',
  498.                    `table_name` varchar(64) NOT NULL default '',
  499.                    `display_field` varchar(64) NOT NULL default '',
  500.                    PRIMARY KEY (`db_name`, `table_name`)
  501.                  ) TYPE=MyISAM COMMENT='Table information for
  502.             phpMyAdmin';
  503.           + put the table name in $cfg['Servers'][$i]['table_info']
  504.           + then for each table where you want to use this feature, click
  505.             "Structure/Relation view/Choose field to display" to choose
  506.             the field.
  507.             
  508.           Usage tip: Display field.
  509.           
  510.    $cfg['Servers'][$i]['table_coords'] string
  511.           $cfg['Servers'][$i]['pdf_pages'] string
  512.           Since release 2.3.0 you can have phpMyAdmin create PDF pages
  513.           showing the relations between your tables. To do this it needs
  514.           two tables "pdf_pages" (storing information about the available
  515.           PDF pages) and "table_coords" (storing coordinates where each
  516.           table will be placed on a PDF schema output).
  517.           You must be using the "relation" feature and have a table of
  518.           PDF pages (see $cfg['Servers'][$i]['pdf_pages']) to create PDF
  519.           output.
  520.           To allow the usage of this functionality the superuser has to:
  521.           
  522.           + set up "pmadb" as described above
  523.           + within this database create a table following this scheme:
  524.                  CREATE TABLE `PMA_table_coords` (
  525.                    `db_name` varchar(64) NOT NULL default '',
  526.                    `table_name` varchar(64) NOT NULL default '',
  527.                    `pdf_page_number` int NOT NULL default '0',
  528.                    `x` float unsigned NOT NULL default '0',
  529.                    `y` float unsigned NOT NULL default '0',
  530.                    PRIMARY KEY (`db_name`, `table_name`,
  531.             `pdf_page_number`)
  532.                  ) TYPE=MyISAM COMMENT='Table coordinates for phpMyAdmin
  533.             PDF output';
  534.           + also within this database create:
  535.                  CREATE TABLE `PMA_pdf_pages` (
  536.                    `db_name` varchar(64) NOT NULL default '',
  537.                    `page_nr` int(10) unsigned NOT NULL auto_increment,
  538.                    `page_descr` varchar(50) NOT NULL default '',
  539.                    PRIMARY KEY (page_nr),
  540.                    KEY (db_name)
  541.                  ) TYPE=MyISAM COMMENT='PDF Relationpages for PMA';
  542.           + put the first table name in
  543.             $cfg['Servers'][$i]['table_coords'] and the second table name
  544.             in $cfg['Servers'][$i]['pdf_pages']
  545.             
  546.           Usage tips: PDF output.
  547.           
  548.    $cfg['Servers'][$i]['column_info'] string
  549.           Since release 2.3.0 you can store comments to describe each
  550.           column for each table. These will then be shown on the
  551.           "printview".
  552.           Starting with release 2.5.0, comments are consequently used on
  553.           the table property pages and table browse view, showing up as
  554.           tool-tips above the column name (properties page) or embedded
  555.           within the header of table in browse view. They can also be
  556.           shown in a table dump. Please see the relevant configuration
  557.           directives later on.
  558.           Also new in release 2.5.0 is a mime-transformation system which
  559.           is also based on the following table structure. See
  560.           Transformations for further information. To use the
  561.           mime-transformation system, your column_info table has to have
  562.           the three new fields 'mimetype', 'transformation',
  563.           'transformation_options'.
  564.           To allow the usage of this functionality the superuser has to:
  565.           
  566.           + set up "pmadb" as described above
  567.           + within this database create a table following this scheme:
  568.                  CREATE TABLE `PMA_column_info` (
  569.                    id int(5) unsigned NOT NULL auto_increment,
  570.                    db_name varchar(64) NOT NULL default '',
  571.                    table_name varchar(64) NOT NULL default '',
  572.                    column_name varchar(64) NOT NULL default '',
  573.                    `comment` varchar(255) NOT NULL default '',
  574.                    mimetype varchar(255) NOT NULL default '',
  575.                    transformation varchar(255) NOT NULL default '',
  576.                    transformation_options varchar(255) NOT NULL default
  577.             '',
  578.                    PRIMARY KEY (id),
  579.                    UNIQUE KEY db_name (db_name, table_name, column_name)
  580.                  ) TYPE=MyISAM COMMENT='Comments for Columns';
  581.           + put the table name in $cfg['Servers'][$i]['column_info']
  582.           + To update your PRE-2.5.0 Column_comments Table use this:
  583.                  ALTER TABLE `PMA_column_comments`
  584.                    ADD `mimetype` VARCHAR( 255 ) NOT NULL ,
  585.                    ADD `transformation` VARCHAR( 255 ) NOT NULL ,
  586.                    ADD `transformation_options` VARCHAR( 255 ) NOT NULL ;
  587.             and remember that the Variable in config.inc.php has been
  588.             renamed from
  589.             $cfg['Servers'][$i]['column_comments'] to
  590.             $cfg['Servers'][$i]['column_info']
  591.             
  592.    $cfg['Servers'][$i]['history'] string
  593.           Since release 2.5.0 you can store your SQL history, which means
  594.           all queries you entered manually into the phpMyAdmin interface.
  595.           If you don't want to use a table- based history, you can use
  596.           the JavaScript-based history. Using that, all your history
  597.           items are deleted when closing the window.
  598.           Using $cfg['QueryHistoryMax'] you can specify an amount of
  599.           history items you want to have on hold. On every login, this
  600.           list gets cut to the maximum amount.
  601.           The query history is only available if you use the
  602.           JavaScript-based query window, see $cfg['QueryFrame'].
  603.           To allow the usage of this functionality the superuser has to:
  604.           
  605.           + set up "pmadb" as described above
  606.           + within this database create a table following this scheme:
  607.                  CREATE TABLE `PMA_history` (
  608.                    `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  609.                    `username` VARCHAR( 64 ) NOT NULL ,
  610.                    `db` VARCHAR( 64 ) NOT NULL ,
  611.                    `table` VARCHAR( 64 ) NOT NULL ,
  612.                    `timevalue` TIMESTAMP NOT NULL ,
  613.                    `sqlquery` TEXT NOT NULL ,
  614.                    PRIMARY KEY ( `id` ) ,
  615.                    INDEX ( `username` , `db` , `table` , `timevalue` )
  616.                    ) TYPE=MyISAM COMMENT='SQL history';
  617.           + put the table name in $cfg['Servers'][$i]['history']
  618.             
  619.    $cfg['Servers'][$i]['verbose_check'] string
  620.           Because release 2.5.0 introduced the new MIME-transformation
  621.           support, the column_info table got enhanced with three new
  622.           fields. If the above variable is set to TRUE (default)
  623.           phpMyAdmin will check if you have the latest table structure
  624.           available. If not, it will emit a warning to the superuser.
  625.           You can disable this checking behavior by setting the variable
  626.           to false, which should offer a performance increase.
  627.           Recommended to set to FALSE, when you are sure, your table
  628.           structure is up to date.
  629.           
  630.    $cfg['Servers'][$i]['AllowDeny']['order'] string
  631.           If your rule order is empty, then IP authentication is
  632.           disabled.
  633.           If your rule order is set to 'deny,allow' then the system
  634.           applies all deny rules followed by allow rules. Access is
  635.           allowed by default. Any client which does not match a Deny
  636.           command or does match an Allow command will be allowed access
  637.           to the server.
  638.           If your rule order is set to 'allow,deny' then the system
  639.           applies all allow rules followed by deny rules. Access is
  640.           denied by default. Any client which does not match an Allow
  641.           directive or does match a Deny directive will be denied access
  642.           to the server.
  643.           If your rule order is set to 'explicit', the authentication is
  644.           performed in a similar fashion to rule order 'deny,allow', with
  645.           the added restriction that your host/username combination must
  646.           be listed in the allow rules, and not listed in the deny rules.
  647.           This is the most secure means of using Allow/Deny rules, and
  648.           was available in Apache by specifying allow and deny rules
  649.           without setting any order.
  650.           
  651.    $cfg['Servers'][$i]['AllowDeny']['rules'] array of strings
  652.           The general format for the rules is as such:
  653.                 <'allow' | 'deny'> <username> [from] <ipmask>
  654.           If you wish to match all users, it is possible to use a '%' as
  655.           a wildcard in the username field.
  656.           There are a few shortcuts you can use in the ipmask field as
  657.           well:
  658.                'all' -> 0.0.0.0/0
  659.                'localhost' -> 127.0.0.1/8
  660.           Having an empty rule list is equivalent to either using 'allow
  661.           % from all' if your rule order is set to 'deny,allow' or 'deny
  662.           % from all' if your rule order is set to 'allow,deny' or
  663.           'explicit'.
  664.           For the IP matching system, the following work:
  665.           xxx.xxx.xxx.xxx (an exact IP address)
  666.           xxx.xxx.xxx.[yyy-zzz] (an IP address range)
  667.           xxx.xxx.xxx.xxx/nn (CIDR, Classless Inter-Domain Routing type
  668.           IP addresses)
  669.           But the following does not work:
  670.           xxx.xxx.xxx.xx[yyy-zzz] (partial IP address range)
  671.           
  672.    $cfg['ServerDefault'] integer
  673.           If you have more than one server configured, you can set
  674.           $cfg['ServerDefault'] to any one of them to autoconnect to that
  675.           server when phpMyAdmin is started, or set it to 0 to be given a
  676.           list of servers without logging in.
  677.           If you have only one server configured, $cfg['ServerDefault']
  678.           MUST be set to that server.
  679.           
  680.    $cfg['OBGzip'] string/boolean
  681.           Defines whether to use GZip output buffering for increased
  682.           speed in HTTP transfers.
  683.           Set to true/false for enabling/disabling. When set to 'auto'
  684.           (string), phpMyAdmin tries to enable output buffering and will
  685.           automatically disable it, if your browser has some problems
  686.           with buffering. IE6 with a certain patch is known to cause data
  687.           corruption having enabled buffering.
  688.           
  689.    $cfg['PersistentConnections'] boolean
  690.           Whether persistent connections should be used or not
  691.           (mysql_connect or mysql_pconnect).
  692.           
  693.    $cfg['ExecTimeLimit'] integer [number of seconds]
  694.           Set the number of seconds a script is allowed to run. If
  695.           seconds is set to zero, no time limit is imposed.
  696.           This setting is used while importing/exporting dump files but
  697.           has no effect when PHP is running in safe mode.
  698.           
  699.    $cfg['SkipLockedTables'] boolean
  700.           Mark used tables and make it possible to show databases with
  701.           locked tables (since 3.23.30).
  702.           
  703.    $cfg['ShowSQL'] boolean
  704.           Defines whether SQL-queries generated by phpMyAdmin should be
  705.           displayed or not.
  706.           
  707.    $cfg['AllowUserDropDatabase'] boolean
  708.           Defines whether normal users (non-administrator) are allowed to
  709.           delete their own database or not. If set as FALSE, the link
  710.           "Drop Database" will not be shown, and even a "DROP DATABASE
  711.           mydatabase" will be rejected. Quite practical for ISP's with
  712.           many customers.
  713.           
  714.    $cfg['Confirm'] boolean
  715.           Whether a warning ("Are your really sure..") should be
  716.           displayed when you're about to loose data.
  717.           
  718.    $cfg['LoginCookieRecall'] boolean
  719.           Define whether the previous login should be recalled or not in
  720.           cookie authentication mode.
  721.           
  722.    $cfg['UseDbSearch'] boolean
  723.           Define whether the "search string inside database" is enabled
  724.           or not.
  725.           
  726.    $cfg['IgnoreMultiSubmitErrors'] boolean
  727.           Define whether phpMyAdmin will continue executing a multi-query
  728.           statement if one of the queries fails. Default is to abort
  729.           execution.
  730.           
  731.    $cfg['VerboseMultiSubmit'] boolean
  732.           Define whether phpMyAdmin will output the results of each query
  733.           of a multi-query statement embedded into the SQL output as
  734.           inline comments. Defaults to TRUE.
  735.           
  736.    $cfg['LeftFrameLight'] boolean
  737.           Defines whether to use select-based menu and display only the
  738.           current tables in the left frame (smaller page). Only in
  739.           Non-Lightmode you can use the feature to display nested folders
  740.           using $cfg['LeftFrameTableSeparator']
  741.           
  742.    $cfg['LeftFrameTableSeparator'] string
  743.           Defines a string to be used to nest table spaces. Defaults to
  744.           '__'. This means if you have tables like 'first__second__third'
  745.           this will be shown as a three-level hierarchie like: first >
  746.           second > third. If set to FALSE or empty, the feature is
  747.           disabled. NOTE: You shall not use this Separator in a table
  748.           name at the beginning or end of a table name, or multiple times
  749.           after another without any other characters in between.
  750.           
  751.    $cfg['LeftFrameTableLevel'] string
  752.           Defines how many sublevels should be displayed when splitting
  753.           up tables by the above Separator.
  754.           
  755.    $cfg['ShowTooltip'] boolean
  756.           Defines whether to display table comment as tool-tip in left
  757.           frame or not.
  758.           
  759.    $cfg['ShowTooltipAliasDB'] boolean
  760.           If tool-tips are enabled and a DB comment is set, this will
  761.           flip the comment and the real name. That means, if you have a
  762.           table called 'user0001' and add the comment 'MyName' on it, you
  763.           will see the name 'MyName' used consequently in the left frame
  764.           and the tool-tip shows the real name of the DB.
  765.           
  766.    $cfg['ShowTooltipAliasTB'] boolean
  767.           Same as $cfg['ShowTooltipAliasDB'], except this works for table
  768.           names.
  769.           
  770.    $cfg['ShowStats'] boolean
  771.           Defines whether to display space usage and statistics about
  772.           databases and tables or not.
  773.           Note that statistics requires at least MySQL 3.23.3 and that,
  774.           at this date, MySQL doesn't return such information for
  775.           Berkeley DB tables.
  776.           
  777.    $cfg['ShowMysqlInfo'] boolean
  778.           $cfg['ShowMysqlVars'] boolean
  779.           $cfg['ShowPhpInfo'] boolean
  780.           $cfg['ShowChgPassword'] boolean
  781.           Defines whether to display the "MySQL runtime information",
  782.           "MySQL system variables", "PHP information" and "Change
  783.           password " links or not for simple users at the starting main
  784.           (right) frame. This setting does not check MySQL commands
  785.           entered directly.
  786.           Please note that to block the usage of phpinfo() in scripts,
  787.           you have to put this in your php.ini:
  788.               disable_functions = phpinfo()
  789.           Also note that enabling the "Change password " link has no
  790.           effect with "config" authentication mode: because of the hard
  791.           coded password value in the configuration file, end users can't
  792.           be allowed to change their passwords.
  793.           
  794.    $cfg['SuggestDBName'] boolean
  795.           Defines whether to suggest a database name on the "Create
  796.           Database" form or to keep the textfield empty.
  797.           
  798.    $cfg['ShowBlob'] boolean
  799.           Defines whether BLOB fields are shown when browsing a table's
  800.           content or not.
  801.           
  802.    $cfg['NavigationBarIconic'] boolean
  803.           Defines whether navigation bar buttons contain text or symbols
  804.           only.
  805.           
  806.    $cfg['ShowAll'] boolean
  807.           Defines whether an user should be displayed a "show all
  808.           (records)" button in browse mode or not.
  809.           
  810.    $cfg['MaxRows'] integer
  811.           Number of rows displayed when browsing a result set. If the
  812.           result set contains more rows, Previous/Next links will be
  813.           shown.
  814.           
  815.    $cfg['Order'] string [DESC|ASC|SMART]
  816.           Defines whether fields are displayed in ascending (ASC) order,
  817.           in descending (DESC) order or in a "smart" (SMART) order - I.E.
  818.           descending order for fields of type TIME, DATE, DATETIME &
  819.           TIMESTAMP, ascending order else- by default.
  820.           
  821.    $cfg['ProtectBinary'] boolean or string
  822.           Defines whether BLOB or BINARY fields are protected from
  823.           edition when browsing a table's content or not. Valid values
  824.           are:
  825.           - FALSE to allow edition of all fields;
  826.           - blob to allow edition of all fields except BLOBS;
  827.           - all to disallow edition of all BINARY or BLOB fields.
  828.           
  829.    $cfg['ShowFunctionFields'] boolean
  830.           Defines whether MySQL functions fields should be displayed or
  831.           not in edit/insert mode.
  832.           
  833.    $cfg['CharEditing'] string
  834.           Defines which type of editing controls should be used for CHAR
  835.           and VARCHAR fields. Possible values are:
  836.           
  837.           + input - this allows to limit size of text to size of field in
  838.             MySQL, but has problems with newlines in fields
  839.           + textarea - no problems with newlines in fields, but also no
  840.             length limitations
  841.             
  842.           Default is old behavior so input.
  843.           
  844.    $cfg['ZipDump'] boolean
  845.           $cfg['GZipDump'] boolean
  846.           $cfg['BZipDump'] boolean
  847.           Defines whether to allow the use of zip/GZip/BZip2 compression
  848.           when creating a dump file or not.
  849.           
  850.    $cfg['LightTabs'] string
  851.           If set to True, do use less graphically intense tabs on the top
  852.           of the mainframe.
  853.           
  854.    $cfg['PropertiesIconic'] string
  855.           If set to True, will display icons instead of text for db and
  856.           table properties links (like 'Browse', 'Select', 'Insert',
  857.           ...).
  858.           Can be set to 'both' if you want icons AND text.
  859.           When set to False, will only show text.
  860.           
  861.    $cfg['PropertiesNumColumns'] integer
  862.           How many columns will be utilized to display the tables on the
  863.           database property view? Default is 1 column. When setting this
  864.           to a value larger than 1, the type of the database will be
  865.           omitted for more display space.
  866.           
  867.    $cfg['DefaultTabServer'] string
  868.           Defines the tab displayed by default on server view. Possible
  869.           values: "main.php3" (recommended for multi-user setups),
  870.           "server_databases.php3", "server_status.php3",
  871.           "server_variables.php3", "server_privileges.php3" or
  872.           "server_processlist.php3".
  873.           
  874.    $cfg['DefaultTabDatabase'] string
  875.           Defines the tab displayed by default on database view. Possible
  876.           values: "db_details_structure.php3", "db_details.php3" or
  877.           "db_search.php3".
  878.           
  879.    $cfg['DefaultTabTable'] string
  880.           Defines the tab displayed by default on table view. Possible
  881.           values: "tbl_properties_structure.php3", "tbl_properties.php3",
  882.           "tbl_select.php3" or "tbl_change.php3".
  883.           
  884.    $cfg['MySQLManualBase'] string
  885.           If set to an URL which points to the MySQL documentation (type
  886.           depends on $cfg['MySQLManualType']), appropriate help links are
  887.           generated.
  888.           See MySQL Documentation page for more information about MySQL
  889.           manuals and their types.
  890.           
  891.    $cfg['MySQLManualType'] string
  892.           Type of MySQL documentation:
  893.           
  894.           + old - old style used in phpMyAdmin 2.3.0 and sooner
  895.           + searchable - "Searchable, with user comments"
  896.           + chapters - "HTML, one page per chapter"
  897.           + big - "HTML, all on one page"
  898.           + none - do not show documentation links
  899.             
  900.    $cfg['DefaultLang'] string
  901.           Defines the default language to use, if not browser-defined or
  902.           user-defined.
  903.           See the select_lang.inc.php3 script to know the valid values
  904.           for this setting.
  905.           
  906.    $cfg['Lang'] string
  907.           Force: always use this language (must be defined in the
  908.           select_lang.inc.php3 script).
  909.           
  910.    $cfg['DefaultCharset'] string
  911.           Default character set to use for recoding of MySQL queries.
  912.           This must be enabled and it's described by
  913.           $cfg['AllowAnywhereRecoding'] option.
  914.           You can give here any character set which is in
  915.           $cfg['AvailableCharsets'] array and this is just default
  916.           choice, user can select any of them.
  917.           
  918.    $cfg['AllowAnywhereRecoding'] boolean
  919.           Allow character set recoding of MySQL queries. You need recode
  920.           or iconv support (compiled in or module) in PHP to allow MySQL
  921.           queries recoding and used language file must have it enabled
  922.           (by default only these which are in Unicode, just to avoid
  923.           losing some characters).
  924.           
  925.    $cfg['RecodingEngine'] string
  926.           You can select here which functions will be used for character
  927.           set conversion. Possible values are:
  928.           
  929.           + auto - automatically use available one (first is tested
  930.             iconv, then recode)
  931.           + iconv - use iconv or libiconv functions
  932.           + recode - use recode_string function
  933.             
  934.           Default is auto.
  935.           
  936.    $cfg['IconvExtraParams'] string
  937.           Specify some parameters for iconv used in charset conversion.
  938.           See iconv documentation for details.
  939.           
  940.    $cfg['AvailableCharsets'] array
  941.           Available character sets for MySQL conversion. You can add your
  942.           own (any of supported by recode/iconv) or remove these which
  943.           you don't use. Character sets will be shown in same order as
  944.           here listed, so if you frequently use some of these move them
  945.           to the top.
  946.           
  947.    $cfg['GD2Available'] string
  948.           Specifies whether GD >= 2 is available. If yes it can be used
  949.           for MIME transformations.
  950.           Possible values are:
  951.           
  952.           + auto - automatically detect, this is a bit expensive
  953.             operation for php < 4.3.0 so it is preffered to change this
  954.             according to your server real possibilities
  955.           + yes - GD 2 functions can be used
  956.           + no - GD 2 function can not be used
  957.             
  958.           Default is auto.
  959.           
  960.    $cfg['LeftWidth'] integer
  961.           Left frame width in pixel.
  962.           
  963.    $cfg['LeftBgColor'] string [HTML color]
  964.           $cfg['RightBgColor'] string [HTML color]
  965.           The background colors (HTML) used for both the frames.
  966.           
  967.    $cfg['RightBgImage'] string
  968.           The URI of the background image used for the right frame. It
  969.           can be absolute as well as relative from your phpMyAdmin
  970.           directory.
  971.           
  972.    $cfg['LeftPointerColor'] string [HTML color]
  973.           The color (HTML) used for the pointer in the left frame (does
  974.           not work with Netscape 4).
  975.           
  976.    $cfg['Border'] integer
  977.           The size of a table's border.
  978.           
  979.    $cfg['ThBgcolor'] string [HTML color]
  980.           The color (HTML) used for table headers.
  981.           
  982.    $cfg['BgcolorOne'] string [HTML color]
  983.           The color (HTML) #1 for table rows.
  984.           
  985.    $cfg['BgcolorTwo'] string [HTML color]
  986.           The color (HTML) #2 for table rows.
  987.           
  988.    $cfg['BrowsePointerColor'] string [HTML color]
  989.           $cfg['BrowseMarkerColor'] string [HTML color]
  990.           The colors (HTML) uses for the pointer and the marker in browse
  991.           mode (does not work with Netscape 4).
  992.           The former feature highlights the row over which your mouse is
  993.           passing and the latter lets you visually mark/unmark rows by
  994.           clicking on them.
  995.           You can disable both of these features by emptying the
  996.           respective directive.
  997.           
  998.    $cfg['TextareaCols'] integer
  999.           $cfg['TextareaRows'] integer
  1000.           $cfg['CharTextareaCols'] integer
  1001.           $cfg['CharTextareaRows'] integer
  1002.           Number of columns and rows for the textareas.
  1003.           This value will be emphasized (*2) for SQL query textareas and
  1004.           (*1.25) for SQL textareas inside the query window.
  1005.           The Char* values are used for CHAR and VARCHAR editing (if
  1006.           configured via $cfg['CharEditing']).
  1007.           
  1008.    $cfg['LongtextDoubleTextarea'] boolean
  1009.           Defines whether textarea for LONGTEXT fields should have double
  1010.           size.
  1011.           
  1012.    $cfg['TextareaAutoSelect'] boolean
  1013.           Defines if the whole textarea of the query box will be selected
  1014.           on click.
  1015.           
  1016.    $cfg['CtrlArrowsMoving'] boolean
  1017.           Enable Ctrl+Arrows moving between fields when editing?
  1018.           
  1019.    $cfg['LimitChars'] integer
  1020.           Maximal number of Chars showed in any non-numeric field on
  1021.           browse view. Can be turned off by a toggle button on the browse
  1022.           page.
  1023.           
  1024.    $cfg['ModifyDeleteAtLeft'] boolean
  1025.           $cfg['ModifyDeleteAtRight'] boolean
  1026.           Defines the place where modify and delete links would be put
  1027.           when tables contents are displayed (you may have them displayed
  1028.           both at the left and at the right). "Left" and "right" are
  1029.           parsed as "top" and "bottom" with vertical display mode.
  1030.           
  1031.    $cfg['DefaultDisplay'] string
  1032.           $cfg['HeaderFlipType'] string
  1033.           There are 3 display modes: horizontal, horizontalflipped and
  1034.           vertical. Define which one is displayed by default. The first
  1035.           mode displays each row on a horizontal line, the second rotates
  1036.           the headers by 90 degrees, so you can use descriptive headers
  1037.           even though fields only contain small values and still print
  1038.           them out. The vertical mode sorts each row on a vertical
  1039.           lineup.
  1040.           The HeaderFlipType can be set to 'css' or 'faked'. When using
  1041.           'css' the rotation of the header for horizontalflipped is done
  1042.           via CSS. If set to 'faked' PGP does the transformation for you,
  1043.           but of course this does not look as good as CSS.
  1044.           
  1045.    $cfg['DefaultPropDisplay'] string
  1046.           When editing/creating new columns in a table all fields
  1047.           normally get lined up one field a line. (default:
  1048.           'horizontal'). If you set this to 'vertical' you can have each
  1049.           field lined up vertically beneath each other. You can save up a
  1050.           lot of place on the horizontal direction and no longer have to
  1051.           scroll.
  1052.           
  1053.    $cfg['ShowBrowseComments'] boolean
  1054.           $cfg['ShowPropertyComments'] boolean
  1055.           By setting the corresponding variable to TRUE you can enable
  1056.           the display of column comments in Browse or Property display.
  1057.           In browse mode, the comments are show inside the header. In
  1058.           property mode, comments are displayed using a CSS-formatted
  1059.           dashed-line below the name of the field. The comment is shown
  1060.           as a tool-tip for that field.
  1061.           
  1062.    $cfg['UploadDir'] string
  1063.           The name of the directory, ending with a slash, where SQL files
  1064.           have been uploaded by other means than phpMyAdmin (for example,
  1065.           ftp). Those files are available under a drop-down box when you
  1066.           click the database name, then the SQL tab.
  1067.           Please note that the file names must have the suffix ".sql".
  1068.           This feature is useful when your file is too big to be uploaded
  1069.           via HTTP, or when file uploads are disabled in PHP.
  1070.           Please note that if PHP is running in safe mode, this directory
  1071.           must be owned by the same user as the owner of the phpMyAdmin
  1072.           scripts.
  1073.           
  1074.    $cfg['SaveDir'] string
  1075.           The name of the directory, ending with a slash, where dumps can
  1076.           be saved.
  1077.           Please note that the directory has to be writable for user
  1078.           running webserver.
  1079.           Please note that if PHP is running in safe mode, this directory
  1080.           must be owned by the same user as the owner of the phpMyAdmin
  1081.           scripts.
  1082.           
  1083.    $cfg['Export'] array
  1084.           In this array are defined default parameters for export, names
  1085.           of items are simmilar to texts seen on export page, so you can
  1086.           easily identify what they mean.
  1087.           
  1088.    $cfg['RepeatCells'] integer
  1089.           Repeat the headers every X cells, or 0 to deactivate.
  1090.           
  1091.    $cfg['QueryFrame'] boolean
  1092.           $cfg['QueryFrameJS'] boolean
  1093.           $cfg['QueryFrameDebug'] boolean
  1094.           $cfg['QueryWindowWidth'] integer
  1095.           $cfg['QueryWindowHeight'] integer
  1096.           $cfg['QueryHistoryDB'] boolean
  1097.           $cfg['QueryWindowDefTab'] string
  1098.           $cfg['QueryHistoryMax'] integer
  1099.           All those variables affect the new query frame/window. When
  1100.           $cfg['QueryFrame'] is set to true a new frame is embedded on
  1101.           the left with a small area. Clicking on that results in opening
  1102.           a direct interface to enter SQL queries.
  1103.           When $cfg['QueryFrameJS'] is set to true, clicking on that link
  1104.           opens a new custom sized browser window
  1105.           ($cfg['QueryWindowWidth'], $cfg['QueryWindowWidth'] - both
  1106.           integers for the size in pixels). If set to false, clicking on
  1107.           the link only opens the SQL input in the mainframe.
  1108.           The usage of the JavaScript query window is recommended if you
  1109.           have a JavaScript enabled browser. Basic functions are used to
  1110.           exchange quite a few variables, so most 4th generation browsers
  1111.           should be capable to use that feature. It currently is only
  1112.           tested with Internet Explorer 6 and Mozilla 1.x.
  1113.           If $cfg['QueryHistoryDB'] is set to TRUE, all your Queries are
  1114.           logged to a table, which has to be created by you (see
  1115.           $cfg['Servers'][$i]['history']). If set to FALSE, all your
  1116.           queries will be appended to the form, but only as long as your
  1117.           window is opened they remain saved.
  1118.           When using the JavaScript based query window, it will always
  1119.           get updated when you click on a new table/db to browse and will
  1120.           focus if you click on "Edit SQL" after using a query. You can
  1121.           suppress updating the query window by checking the box "Do not
  1122.           overwrite this query from outside the window" below the query
  1123.           textarea. Then you can browse tables/databases in the
  1124.           background without losing the contents of the textarea, so this
  1125.           is especially useful when composing a query with tables you
  1126.           first have to look in. The checkbox will get automatically
  1127.           checked whenever you change the contents of the textarea.
  1128.           Please uncheck the button whenever you definitely want the
  1129.           query window to get updated even though you have made
  1130.           alterations.
  1131.           If $cfg['QueryHistoryDB'] is set to TRUE you can specify the
  1132.           amount of saved history items using $cfg['QueryHistoryMax'].
  1133.           The query window also has a custom tabbed look to group the
  1134.           features. Using the variable $cfg['QueryWindowDefTab'] you can
  1135.           specify the default tab to be used when opening the query
  1136.           window. It can be set to either 'sql', 'files', 'history' or
  1137.           'full'.
  1138.           The variable $cfg['QueryFrameDebug'] can be used by developers
  1139.           for easier future feature integration.
  1140.           
  1141.    $cfg['BrowseMIME'] boolean
  1142.           Enable MIME-transformations.
  1143.           
  1144.    $cfg['MaxExactCount'] integer
  1145.           Determines for how large tables phpMyAdmin should get exact row
  1146.           count by SELECT COUNT. If approximate row count is smaller than
  1147.           this value, SELECT COUNT will be used, otherwise only value
  1148.           returned by SHOW TABLE STATUS.
  1149.           
  1150.    $cfg['WYSIWYG-PDF'] boolean
  1151.           Utilizes a WYSIWYG editing control to easily place elements of
  1152.           a PDF page. By clicking on the button 'toggle scratchboard' on
  1153.           the page where you edit x/y coordinates of those elements you
  1154.           can activate a scratchboard where all your elements are placed.
  1155.           By clicking on an element, you can move them around in the
  1156.           pre-defined area and the x/y coordinates will get updated
  1157.           dynamically. Likewise, when entering a new position directly
  1158.           into the input field, the new position in the scratchboard
  1159.           changes after your cursors leaves the input field.
  1160.           You have to click on the 'OK'-button below the tables to save
  1161.           the new positions. If you want to place a new element, first
  1162.           add it to the table of elements and then you can drag the new
  1163.           element around.
  1164.           By changing the paper size and the orientation you can change
  1165.           the size of the scratchboard as well. You can do so by just
  1166.           changing the dropdown field below, and the scratchboard will
  1167.           resize automatically, without interfering with the current
  1168.           placement of the elements.
  1169.           If ever an element gets out of range you can either enlarge the
  1170.           paper size or click on the 'reset' button to place all elements
  1171.           below each other.
  1172.           NOTE: You have to use a recent browser like IE6 or Mozilla to
  1173.           get this control to work. The basic Drag&Drop script
  1174.           functionality was kindly borrowed from www.youngpup.net and is
  1175.           underlying so specific license.
  1176.           
  1177.    $cfg['SQP']['fmtType'] string [html|none]
  1178.           The main use of the new SQL Parser is to pretty-print SQL
  1179.           queries. By default we use HTML to format the query, but you
  1180.           can disable this by setting this variable to 'none'
  1181.           
  1182.    $cfg['SQP']['fmtInd'] float
  1183.           $cfg['SQP']['fmtIndUnit'] string [em|px|pt|ex]
  1184.           For the pretty-printing of SQL queries, under some cases the
  1185.           part of a query inside a bracket is indented. By changing
  1186.           $cfg['SQP']['fmtInd'] you can change the amount of this indent.
  1187.           Related in purpose is $cfg['SQP']['fmtIndUnit'] which specifies
  1188.           the units of the indent amount that you specified. This is used
  1189.           via stylesheets.
  1190.           
  1191.    $cfg['SQP']['fmtColor'] array of string tuples
  1192.           This array is used to define the colours for each type of
  1193.           element of the pretty-printed SQL queries. The tuple format is
  1194.           class => [HTML colour code | empty string]
  1195.           If you specify an empty string for the color of a class, it is
  1196.           ignored in creating the stylesheet. You should not alter the
  1197.           class names, only the colour strings.
  1198.           Class name key:
  1199.           
  1200.           + comment Applies to all comment sub-classes
  1201.           + comment_mysql Comments as "#...\n"
  1202.           + comment_ansi Comments as "-- ...\n"
  1203.           + comment_c Comments as "/*...*/"
  1204.           + digit Applies to all digit sub-classes
  1205.           + digit_hex Hexadecimal numbers
  1206.           + digit_integer Integer numbers
  1207.           + digit_float Floating point numbers
  1208.           + punct Applies to all punctuation sub-classes
  1209.           + punct_bracket_open_round Opening brackets"("
  1210.           + punct_bracket_close_round Closing brackets ")"
  1211.           + punct_listsep List item Separator ","
  1212.           + punct_qualifier Table/Column Qualifier "."
  1213.           + punct_queryend End of query marker ";"
  1214.           + alpha Applies to all alphabetic classes
  1215.           + alpha_columnType Identifiers matching a column type
  1216.           + alpha_columnAttrib Identifiers matching a
  1217.             database/table/column attribute
  1218.           + alpha_functionName Identifiers matching a MySQL function name
  1219.           + alpha_reservedWord Identifiers matching any other reserved
  1220.             word
  1221.           + alpha_variable Identifiers matching a SQL variable "@foo"
  1222.           + alpha_identifier All other identifiers
  1223.           + quote Applies to all quotation mark classes
  1224.           + quote_double Double quotes "
  1225.           + quote_single Single quotes '
  1226.           + quote_backtick Backtick quotes `
  1227.             
  1228.    $cfg['SQLValidator']['use'] boolean
  1229.           phpMyAdmin now supports use of the Mimer SQL Validator service,
  1230.           as originally published on Slashdot.
  1231.           For help in setting up your system to use the service, see the
  1232.           FAQ #6.14.
  1233.           
  1234.    $cfg['SQLValidator']['username'] string
  1235.           $cfg['SQLValidator']['password'] string
  1236.           The SOAP service allows you to login with anonymous and any
  1237.           password, so we use those by default.. Instead, if you have an
  1238.           account with them, you can put your login details here, and it
  1239.           will be used in place of the anonymous login.
  1240.           
  1241.    $cfg['DBG']['enable'] boolean
  1242.           DEVELOPERS ONLY!
  1243.           Enable the DBG extension for debugging phpMyAdmin. Required for
  1244.           profiling the code.
  1245.           For help in setting up your system to this, see the Developers
  1246.           section.
  1247.           
  1248.    $cfg['DBG']['profile']['enable'] boolean
  1249.           DEVELOPERS ONLY!
  1250.           Enable profiling support for phpMyAdmin. This will append a
  1251.           chunk of data to the end of every page displayed in the main
  1252.           window with profiling statistics for that page.
  1253.           You may need need to increase the maximum execution time for
  1254.           this to complete successfully.
  1255.           
  1256.    $cfg['DBG']['profile']['threshold'] float (units in milliseconds)
  1257.           DEVELOPERS ONLY!
  1258.           When profiling data is displayed, this variable controls the
  1259.           threshold of display for any profiling data, based on the
  1260.           average time each time has taken. If it is over the threshold
  1261.           it is displayed, otherwise it is not displayed. This takes a
  1262.           value in milliseconds. In most cases you don't need to edit
  1263.           this.
  1264.           
  1265.    $cfg['ColumnTypes'] array
  1266.           All possible types of a MySQL column. In most cases you don't
  1267.           need to edit this.
  1268.           
  1269.    $cfg['AttributeTypes'] array
  1270.           Possible attributes for fields. In most cases you don't need to
  1271.           edit this.
  1272.           
  1273.    $cfg['Functions'] array
  1274.           A list of functions MySQL supports. In most cases you don't
  1275.           need to edit this.
  1276.           
  1277. Transformations
  1278.  
  1279.    Introduction  -  Usage  -  File structure  -
  1280.    
  1281.   [1. Introduction]
  1282.   
  1283.    To enable transformations, you have to setup the column_info table and
  1284.    the proper directives. Please see the Configuration section on how to
  1285.    do so.
  1286.    
  1287.    You can apply different transformations to the contents of each field.
  1288.    The transformation will take the content of each field and transform
  1289.    it with certain rules defined in the selected transformation.
  1290.    
  1291.    Say you have a field 'filename' which contains a filename. Normally
  1292.    you would see in phpMyAdmin only this filename. Using transformations
  1293.    you can transform that filename into a HTML link, so you can click
  1294.    inside of the phpMyAdmin structure on the field's link and will see
  1295.    the file displayed in a new browser window. Using transformation
  1296.    options you can also specify strings to append/prepend to a string or
  1297.    the format you want the output stored in.
  1298.    
  1299.    For a general overview of all available transformations and their
  1300.    options, you can consult your
  1301.    <www.your-host.com>/<your-install-dir>/libraries/transformations/overv
  1302.    iew.php3 installation.
  1303.    
  1304.    For a tutorial on how to effectively use transformations, see our Link
  1305.    section on the official phpMyAdmin-homepage.
  1306.    
  1307.   [2. Usage]
  1308.   
  1309.    Go to your tbl_properties.inc.php3 page (i.e. reached through clicking
  1310.    on the 'properties' link for a table). There click on "Change" (or
  1311.    change icon) and there you will see three new fields at the end of the
  1312.    line. They are called 'MIME-type', 'Browser transformation' and
  1313.    'Transformation options'.
  1314.      * The field 'MIME-type' is a dropdown field. You have the options to
  1315.        leave that field empty or to use 'auto' [this feature is not yet
  1316.        available]. Please note that transformations are inactive as long
  1317.        as no mime-type is selected.
  1318.      * The field 'Browser transformation' is a drop-down field. You can
  1319.        choose from a hopefully growing amount of pre-defined
  1320.        transformations. See below for information on how to build your
  1321.        own transformation.
  1322.        There are global transformations and mimetype-bound
  1323.        transformations. Global transformations can be used for any
  1324.        mimetype. They will take the mimetype, if necessary, into regard.
  1325.        Mimetype-bound transformations usually only operate on a certain
  1326.        mimetype. There are transformations which operate on the main
  1327.        mimetype (like 'image'), which will most likely take the subtype
  1328.        into regard, and those who only operate on a specific subtype
  1329.        (like 'image/jpeg').
  1330.        You can use transformations on mimetypes for which the function
  1331.        was not defined for. There is no security check for you selected
  1332.        the right transformation, so take care of what the output will be
  1333.        like.
  1334.      * The field 'Transformation options' is a free-type textfield. You
  1335.        have to enter transform-function specific options here. Usually
  1336.        the transforms can operate with default options, but it is
  1337.        generally a good idea to look up the overview to see which options
  1338.        are necessary.
  1339.        Much like the ENUM/SET-Fields, you have to split up several
  1340.        options using the format 'a','b','c',...(NOTE THE MISSING BLANKS).
  1341.        This is because internally the options will be parsed as an array,
  1342.        leaving the first value the first element in the array, and so
  1343.        forth.
  1344.        If you want to specify a MIME character set you can define it in
  1345.        the transformation_options. You have to put that outside of the
  1346.        pre-defined options of the specific mime-transform, as the last
  1347.        value of the set. Use the format "'; charset=XXX'". If you use a
  1348.        transform, for which you can specify 2 options and you want to
  1349.        append a character set, enter "'first parameter','second
  1350.        parameter','charset=us-ascii'". You can, however use the defaults
  1351.        for the parameters: "'','','charset=us-ascii'".
  1352.        
  1353.   [3. File structure]
  1354.   
  1355.    All mimetypes and their transformations are defined through single
  1356.    files in the directory 'libraries/transformations/'.
  1357.    
  1358.    They are stored in files to ease up customization and easy adding of
  1359.    new transformations.
  1360.    
  1361.    Because the user cannot enter own mimetypes, it is kept sure that
  1362.    transformations always work. It makes no sense to apply a
  1363.    transformation to a mimetype, the transform-function doesn't know to
  1364.    handle.
  1365.    
  1366.    One can, however, use empty mime-types and global transformations
  1367.    which should work for many mimetypes. You can also use transforms on a
  1368.    different mimetype they where built for, but pay attention to option
  1369.    usage as well as what the transformation does to your field.
  1370.    
  1371.    There is a basic file called 'global.inc.php3'. This function can be
  1372.    included by any other transform function and provides some basic
  1373.    functions.
  1374.    
  1375.    There are 5 possible file names:
  1376.     1. A mimetype+subtype transform:
  1377.        [mimetype]_[subtype]__[transform].inc.php3
  1378.        Please not that mimetype and subtype are separated via '_', which
  1379.        shall not be contained in their names. The transform
  1380.        function/filename may contain only characters which cause no
  1381.        problems in the file system as well as the PHP function naming
  1382.        convention.
  1383.        The transform function will the be called
  1384.        'PMA_transform_[mimetype]_[subtype]__[transform]()'.
  1385.        Example:
  1386.        text_html__formatted.inc.php3
  1387.        PMA_transform_text_html__formatted()
  1388.     2. A mimetype (w/o subtype) transform:
  1389.        [mimetype]__[transform].inc.php3
  1390.        Please note that there are no single '_' characters. The transform
  1391.        function/filename may contain only characters which cause no
  1392.        problems in the file system as well as the PHP function naming
  1393.        convention.
  1394.        The transform function will the be called
  1395.        'PMA_transform_[mimetype]__[transform]()'.
  1396.        Example:
  1397.        text__formatted.inc.php3
  1398.        PMA_transform_text__formatted()
  1399.     3. A mimetype+subtype without specific transform function
  1400.        [mimetype]_[subtype].inc.php3
  1401.        Please note that there are no '__' characters in the filename. Do
  1402.        not use special characters in the filename causing problems with
  1403.        the file system.
  1404.        No transformation function is defined in the file itself.
  1405.        Example:
  1406.        text_plain.inc.php3
  1407.        (No function)
  1408.     4. A mimetype (w/o subtype) without specific transform function
  1409.        [mimetype].inc.php3
  1410.        Please note that there are no '_' characters in the filename. Do
  1411.        not use special characters in the filename causing problems with
  1412.        the file system.
  1413.        No transformation function is defined in the file itself.
  1414.        Example:
  1415.        text.inc.php3
  1416.        (No function)
  1417.     5. A global transform function with no specific mimetype
  1418.        global__[transform].inc.php3
  1419.        The transform function will the be called
  1420.        'PMA_transform_global__[transform]()'.
  1421.        Example:
  1422.        global__formatted
  1423.        PMA_transform_global__formatted()
  1424.        
  1425.    So generally use '_' to split up mimetype and subtype, and '__' to
  1426.    provide a transform function.
  1427.    
  1428.    All filenames containing no '__' in themselves are not shown as valid
  1429.    transform functions in the dropdown.
  1430.    
  1431.    Please see the libraries/transformations/TEMPLATE file for adding your
  1432.    own transform function. See the
  1433.    libraries/transformations/TEMPLATE_MIMETYPE for adding a mimetype
  1434.    without a transform function. Also note the introduction of a function
  1435.    description in the language files. For each function a
  1436.    $strTransformation_[filename without .inc.php3] has to exist.
  1437.    
  1438.    You can use the template generator to generate new functions and
  1439.    entries in the language file.
  1440.    
  1441.    To create a new transform function please see
  1442.    libraries/transformations/template_generator.sh. To create a new,
  1443.    empty mimetype please see
  1444.    libraries/transformations/template_generator_mimetype.sh.
  1445.    
  1446. FAQ - Frequently Asked Questions
  1447.  
  1448.    Server  -  Configuration  -  Limitations  -  Multi-user  -  Browsers
  1449.    -  Usage tips  -  Project  -  Security
  1450.    
  1451.    Please have a look at our Link section on the official phpMyAdmin
  1452.    homepage for in-depth coverage of phpMyAdmin's features and/or
  1453.    interface.
  1454.    
  1455.   [1. Server]
  1456.   
  1457.     [1.1] I'm running PHP 4+ and my server is crashing each time a specific
  1458.     action is required or phpMyAdmin sends a blank page or a page full of
  1459.     cryptic characters to my browser, what can I do?
  1460.     
  1461.    There are some known PHP bugs with output buffering and compression.
  1462.    Try to set the $cfg['OBGzip'] directive to FALSE in your
  1463.    config.inc.php or .php3 file and the zlib.output_compression directive
  1464.    to Off in your php configuration file.
  1465.    Furthermore, we know about such problems connected to the release
  1466.    candidates of PHP 4.2.0 (tested with PHP 4.2.0 RC1 to RC4) together
  1467.    with MS Internet Explorer. Please upgrade to the release version PHP
  1468.    4.2.0.
  1469.    
  1470.     [1.2] My Apache server crashes when using phpMyAdmin.
  1471.     
  1472.    You should first try the latest versions of Apache (and possibly
  1473.    MySQL).
  1474.    See also the other FAQ entry about PHP bugs with output buffering.
  1475.    If your server keeps crashing, please ask for help in the various
  1476.    Apache support groups.
  1477.    
  1478.     [1.3] I'm running phpMyAdmin with "cookie" authentication mode under PHP
  1479.     4.2.0 or 4.2.1 loaded as an Apache 2+ module but can't enter the script:
  1480.     I'm always displayed the login screen.
  1481.     
  1482.    This is a known PHP bug (see this bug report) from the official PHP
  1483.    bug database. It means there is and won't be any phpMyAdmin fix
  1484.    against it because there is no way to code a fix.
  1485.    
  1486.     [1.4] Using phpMyAdmin on IIS, I'm displayed the error message: "The
  1487.     specified CGI application misbehaved by not returning a complete set of
  1488.     HTTP headers...".
  1489.     
  1490.    You just forgot to read the install.txt file from the php
  1491.    distribution. Have a look at the last message in this bug report from
  1492.    the official PHP bug database.
  1493.    
  1494.     [1.5] Using phpMyAdmin on IIS, I'm facing crashes and/or many error
  1495.     messages with the HTTP or advanced authentication mode.
  1496.     
  1497.    This is a known problem with the PHP ISAPI filter: it's not so stable.
  1498.    For some more information and complete testings see the messages
  1499.    posted by AndrΘ B. aka "djdeluxe76" in this thread from the phpWizard
  1500.    forum.
  1501.    Please use instead the cookie authentication mode.
  1502.    
  1503.     [1.6] I can't use phpMyAdmin on PWS: nothing is displayed!
  1504.     
  1505.    This seems to be a PWS bug. Filippo Simoncini found a workaround (at
  1506.    this time there is no better fix): remove or comment the DOCTYPE
  1507.    declarations (2 lines) from the scripts header.inc.php3,
  1508.    header_printview.inc.php3, index.php3, left.php3 and
  1509.    libraries/common.lib.php3.
  1510.    
  1511.     [1.7] How can I GZip or Bzip a dump or a CSV export. It does not seem to
  1512.     work.
  1513.     
  1514.    These features are based on the gzencode() and bzcompress() PHP
  1515.    functions to be more independent of the platform (Unix/Windows, Safe
  1516.    Mode or not, and so on). So, you must have PHP4 >= 4.0.4 and
  1517.    Zlib/Bzip2 support (--with-zlib and --with-bz2).
  1518.    We faced PHP crashes when trying to download a dump with MS Internet
  1519.    Explorer when phpMyAdmin is run with a release candidate of PHP 4.2.0.
  1520.    In this case you should switch to the release version of PHP 4.2.0.
  1521.    
  1522.     [1.8] I cannot insert a text file in a table, and I get an error about safe
  1523.     mode being in effect.
  1524.     
  1525.    Your uploaded file is saved by PHP in the "upload dir", as defined in
  1526.    php.ini by the variable upload_tmp_dir (usually the system default is
  1527.    /tmp).
  1528.    We recommend the following setup for Apache servers running in safe
  1529.    mode, to enable uploads of files while being reasonably secure:
  1530.      * create a separate directory for uploads: mkdir /tmp/php
  1531.      * give ownership to the Apache server's user.group: chown
  1532.        apache.apache /tmp/php
  1533.      * give proper permission: chmod 600 /tmp/php
  1534.      * put upload_tmp_dir = /tmp/php in php.ini
  1535.      * restart Apache
  1536.        
  1537.     [1.9] I'm having troubles when uploading files. In general file uploads
  1538.     don't work on my system and uploaded files have a Content-Type: header in
  1539.     the first line.
  1540.     
  1541.    It's not really phpMyAdmin related but RedHat 7.0. You have a RedHat
  1542.    7.0 and you updated your PHP RPM to php-4.0.4pl1-3.i386.rpm, didn't
  1543.    you?
  1544.    So the problem is that this package has a serious bug that was
  1545.    corrected ages ago in PHP (2001-01-28: see PHP's bug tracking system
  1546.    for more details). The problem is that the bugged package is still
  1547.    available though it was corrected (see RedHat's BugZilla for more
  1548.    details).
  1549.    So please download the fixed package (4.0.4pl1-9) and the problem
  1550.    should go away.
  1551.    And that fixes the \r\n problem with file uploads!
  1552.    
  1553.     [1.10] I'm having troubles when uploading files with phpMyAdmin running on
  1554.     a secure server. My browser is Internet Explorer and I'm using the Apache
  1555.     server.
  1556.     
  1557.    As suggested by "Rob M" in the phpWizard forum, add this line to your
  1558.    httpd.conf:
  1559.        SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
  1560.    It seems to clear up many problems between Internet Explorer and SSL.
  1561.    
  1562.     [1.11] I get an 'open_basedir restriction' while uploading a file from the
  1563.     query box.
  1564.     
  1565.    Since version 2.2.4, phpMyAdmin supports servers with open_basedir
  1566.    restrictions. Assuming that the restriction allows you to open files
  1567.    in the current directory ('.'), all you have to do is create a 'tmp'
  1568.    directory under the phpMyAdmin install directory, with permissions 777
  1569.    and the same owner as the owner of your phpMyAdmin directory. The
  1570.    uploaded files will be moved there, and after execution of your SQL
  1571.    commands, removed.
  1572.    
  1573.     [1.12] I have lost my MySQL root password, what can I do?
  1574.     
  1575.    The MySQL manual explains how to reset the permissions.
  1576.    
  1577.     [1.13] I get an error 'No SQL query' when trying to execute a bookmark.
  1578.     
  1579.    If PHP does not have read/write access to its upload_tmp_dir, it
  1580.    cannot access the uploaded query.
  1581.    
  1582.     [1.14] I get an error 'No SQL query' when trying to submit a query from the
  1583.     convenient text area.
  1584.     
  1585.    Check the post_max_size directive from your PHP configuration file and
  1586.    try to increase it.
  1587.    
  1588.     [1.15] I have problems with mysql.user field names.
  1589.     
  1590.    In older MySQL versions, the User and Password fields were named user
  1591.    and password. Please modify your field names to align with current
  1592.    standards.
  1593.    
  1594.     [1.16] I cannot upload big dump files (memory, http or timeout problems).
  1595.     
  1596.    The first things to check (or ask your host provider to check) are the
  1597.    values of upload_max_filesize, memory_limit and post_max_size in the
  1598.    php.ini configuration file.
  1599.    All of these three settings limit the maximum size of data that can be
  1600.    submitted and handled by PHP. One user also said that post_max_size
  1601.    and memory_limit need to be larger than upload_max_filesize.
  1602.    If you get a timeout problem, look at the $cfg['UploadDir'] feature.
  1603.    
  1604.     [1.17] Which MySQL versions does phpMyAdmin support?
  1605.     
  1606.    All MySQL versions from 3.21 till 4.0 are fully supported. Please note
  1607.    that the older your MySQL version is, the more limitations you will
  1608.    have to face.
  1609.    phpMyAdmin provides experimental support for MySQL 4.1. That means
  1610.    that although you can assign character sets to a table or field,
  1611.    phpMyAdmin will not recode the data when inserting or extracting it.
  1612.    Instead, it will still use the character set you specified for the
  1613.    MySQL connection.
  1614.    When compiling php, we strongly recommend that you manually link the
  1615.    MySQL extension to a MySQL client library of at least the same version
  1616.    since the one that is bundled with php 4.x is rather old and might
  1617.    cause problems.
  1618.    Also, we do not yet support the imporoved MySQL extension (mysqli)
  1619.    that comes with php 5. For the moment, the old MySQL extension should
  1620.    also work fine here, if compiled correctly.
  1621.    MySQL 5.0 and 5.1 are not yet supported.
  1622.    
  1623.     [1.18] I'm running MySQL <= 4.0.1 having lower_case_table_names set to 1.
  1624.     If I create a new table with a capital letter in its name it is changed to
  1625.     lowercase as it should. But if I try to DROP this table MySQL is unable to
  1626.     find the corresponding file.
  1627.     
  1628.    This is a bug of MySQL <= 4.0.1. Please upgrade to at least
  1629.    MySQL 4.0.2 or turn off your lower_case_table_names directive.
  1630.    
  1631.     [1.19] I can't run the "display relations" feature because the script seems
  1632.     not to know the font face I'm using!
  1633.     
  1634.    The "FPDF" library we're using for this feature requires some special
  1635.    files to use font faces.
  1636.    Please refers to the FPDF manual to build these files.
  1637.    
  1638.     [1.20] I receive the error "cannot load MySQL extension, please check PHP
  1639.     Configuration".
  1640.     
  1641.    To connect to a MySQL server, PHP needs a set of MySQL functions
  1642.    called "MySQL extension". This extension may be part of the PHP
  1643.    distribution (compiled-in), otherwise it needs to be loaded
  1644.    dynamically. Its name is probably mysql.so or php_mysql.dll.
  1645.    phpMyAdmin tried to load the extension but failed.
  1646.    Usually, the problem is solved by installing a software package called
  1647.    "PHP-MySQL" or something similar.
  1648.    
  1649.     [1.21] I am running the CGI version of PHP under Unix, and I cannot login
  1650.     using cookie auth.
  1651.     
  1652.    In php.ini, set mysql.max_links higher than 1.
  1653.    
  1654.     [1.22] I don't see the "Location of text file" field, so I cannot upload.
  1655.     
  1656.    This is most likely because in php.ini, your file_uploads parameter is
  1657.    not set to "on".
  1658.    
  1659.     [1.23] I'm running MySQL on a Win32 machine. Each time I create a new table
  1660.     the table and field names are changed to lowercase!
  1661.     
  1662.    This happens because the MySQL directive lower_case_table_names
  1663.    defaults to 1 (ON) in the Win32 version of MySQL. You can change this
  1664.    behavior by simply changing the directive to 0 (OFF):
  1665.    Just edit your my.ini file that should be located in your Windows
  1666.    directory and add the following line to the group [mysqld]:
  1667.    set-variable = lower_case_table_names=0
  1668.    Next, save the file and restart the MySQL service. You can always
  1669.    check the value of this directive using the query
  1670.    SHOW VARIABLES LIKE 'lower_case_table_names';
  1671.    
  1672.     [1.24] Some characters are being truncated in my queries, or I get
  1673.     characters randomly added. I am running PHP 4.2.3.
  1674.     
  1675.    This is a PHP 4.2.3 bug.
  1676.    
  1677.     [1.25] I am running Apache with mod_gzip-1.3.26.1a on Windows XP, and I get
  1678.     problems, such as undefined variables when I run a SQL query.
  1679.     
  1680.    A tip from Jose Fandos: put a comment on the following two lines in
  1681.    httpd.conf, like this:
  1682.    # mod_gzip_item_include file \.php$
  1683.    # mod_gzip_item_include mime "application/x-httpd-php.*"
  1684.    as this version of mod_gzip on Apache (Windows) has problems handling
  1685.    PHP scripts. Of course you have to restart Apache.
  1686.    
  1687.     [1.26] I just installed phpMyAdmin in my document root of IIS but I get the
  1688.     error "No input file specified" when trying to run phpMyAdmin.
  1689.     
  1690.    This is a permission problem. Right-click on the phpmyadmin folder and
  1691.    choose properties. Under the tab Security, click on "Add" and select
  1692.    the user "IUSER_machine" from the list. Now set his permissions and it
  1693.    should work.
  1694.    
  1695.     [1.27] I get empty page when I want to view huge page (eg.
  1696.     db_details_structure.php3 with plenty of tables).
  1697.     
  1698.    This is a PHP bug that occur when GZIP output buffering enabled. If
  1699.    you turn off it (by $cfg['OBGzip'] = FALSE in config.inc.php3), it
  1700.    should work. This bug will be fixed in PHP 5.0.0.
  1701.    
  1702.     [1.28] My MySQL server sometimes refuses queries and returns the message
  1703.     'Errorcode: 13'. What does this mean?
  1704.     
  1705.    This can happen due to a MySQL bug when having database / table names
  1706.    with upper case characters although lower_case_table_names is set to
  1707.    1. To fix this, turn off this directive, convert all database and
  1708.    table names to lower case and turn it on again. Alternatively, there's
  1709.    a bug-fix available starting with MySQL 3.23.56 / 4.0.11-gamma.
  1710.    
  1711.     [1.29] When I create a table or modify a field, I get an error and the
  1712.     fields are duplicated.
  1713.     
  1714.    It is possible to configure Apache in such a way that PHP has problems
  1715.    interpreting .php files.
  1716.    The problems occur when two different (and conflicting) set of
  1717.    directives are used:
  1718.    SetOutputFilter PHP
  1719.    SetInputFilter PHP
  1720.    &
  1721.    AddType application/x-httpd-php .php
  1722.    In the case we saw, one set of directives was in httpd.conf, while the
  1723.    other set was in php.conf.
  1724.    The recommended way is with AddType, so just comment out the first set
  1725.    of lines and restart Apache:
  1726.    #SetOutputFilter PHP
  1727.    #SetInputFilter PHP
  1728.    
  1729.     [1.30] I get the error "left.php: Missing hash".
  1730.     
  1731.    This problem is known to happen when the server is running Turck
  1732.    MMCache but upgrading MMCache to version 2.3.21 solves the problem.
  1733.    
  1734.   [2. Configuration]
  1735.   
  1736.     [2.1] The error message "Warning: Cannot add header information - headers
  1737.     already sent by ..." is displayed, what's the problem?
  1738.     
  1739.    Edit your config.inc.php or .php3 file and ensure there is nothing
  1740.    (I.E. no blank lines, no spaces, no characters...) neither before the
  1741.    <?php tag at the beginning, neither after the ?> tag at the end.
  1742.    
  1743.     [2.2] phpMyAdmin can't connect to MySQL. What's wrong?
  1744.     
  1745.    Either there is an error with your PHP setup or your username/password
  1746.    is wrong. Try to make a small script which uses mysql_connect and see
  1747.    if it works. If it doesn't, it may be you haven't even compiled MySQL
  1748.    support into PHP.
  1749.    
  1750.     [2.3] The error message "Warning: MySQL Connection Failed: Can't connect to
  1751.     local MySQL server through socket '/tmp/mysql.sock' (111)..." is displayed.
  1752.     What can I do?
  1753.     
  1754.    For RedHat users, Harald Legner suggests this on the mailing list:
  1755.    On my RedHat-Box the socket of MySQL is /var/lib/mysql/mysql.sock. In
  1756.    your php.ini you will find a line
  1757.        mysql.default_socket = /tmp/mysql.sock
  1758.    change it to
  1759.        mysql.default_socket = /var/lib/mysql/mysql.sock
  1760.    Then restart apache and it will work.
  1761.    Here is a fix suggested by Brad Ummer in the phpwizard forum:
  1762.      * First, you need to determine what socket is being used by MySQL.
  1763.        To do this, telnet to your server and go to the MySQL bin
  1764.        directory. In this directory there should be a file named
  1765.        mysqladmin. Type ./mysqladmin variables, and this should give you
  1766.        a bunch of info about your MySQL server, including the socket
  1767.        (/tmp/mysql.sock, for example).
  1768.      * Then, you need to tell PHP to use this socket.
  1769.        Assuming you are using PHP 3.0.10 or better, you can specify the
  1770.        socket to use when you open the connection. To do this in
  1771.        phpMyAdmin, you need to complete the socket information in the
  1772.        config.inc.php3.
  1773.        For example: $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
  1774.        Please also make sure that the permissions of this file allow to
  1775.        be readable by your webserver (i.e. '0755').
  1776.        
  1777.    Have also a look at the corresponding section of the MySQL
  1778.    documentation.
  1779.    
  1780.     [2.4] Nothing is displayed by my browser when I try to run phpMyAdmin, what
  1781.     can I do?
  1782.     
  1783.    Try to set the $cfg['OBGZip'] directive to FALSE in the phpMyAdmin
  1784.    configuration file. It helps sometime.
  1785.    Also have a look at your PHP version number: if it contains "4.0b..."
  1786.    it means you're running a beta version of PHP. That's not a so good
  1787.    idea, please upgrade to a plain revision.
  1788.    
  1789.     [2.5] Each time I want to insert or change a record or drop a database or a
  1790.     table, an error 404 (page not found) is displayed or, with HTTP or cookie
  1791.     authentication, I'm asked to login again. What's wrong?
  1792.     
  1793.    Check the value you set for the $cfg['PmaAbsoluteUri'] directive in
  1794.    the phpMyAdmin configuration file.
  1795.    
  1796.     [2.6] I get an "Access denied for user: 'root@localhost' (Using password:
  1797.     YES)"-error when trying to access a MySQL-Server on a host which is
  1798.     port-forwarded for my localhost
  1799.     
  1800.    When you are using a port on your localhost, which you redirect via
  1801.    port-forwarding to another host, MySQL is not resolving the localhost
  1802.    as expected.
  1803.    Erik Wasser explains: The solution is: if your host is "localhost"
  1804.    MySQL (the commandline tool 'mysql' as well) always tries to use the
  1805.    socket connection for speeding up things. And that doesn't work in
  1806.    this configuration with port forwarding.
  1807.    If you enter "127.0.0.1" as hostname, everything is right and MySQL
  1808.    uses the TCP connection.
  1809.    
  1810.   [3. Known limitations]
  1811.   
  1812.     [3.1] When using HTTP authentication, an user who logged out can not
  1813.     relogin in with the same nick.
  1814.     
  1815.    This is related to the authentication mechanism (protocol) used by
  1816.    phpMyAdmin. To bypass this problem: just close all the opened browser
  1817.    windows and then go back to phpMyAdmin. You should be able to log in
  1818.    again.
  1819.    
  1820.     [3.2] When dumping a large table in compressed mode, I get a memory limit
  1821.     error or a time limit error.
  1822.     
  1823.    As of version 2.2.4, we build the compressed dump in memory, so large
  1824.    tables dumps may hang. The only alternative we can think about (using
  1825.    system calls to mysqldump then gzip or bzip2) would not be applicable
  1826.    in environments where PHP is in safe mode: access to system programs
  1827.    is is limited by the system administrator, and time limit is enforced.
  1828.    
  1829.     [3.3] With InnoDB tables, I lose foreign key relationships when I rename or
  1830.     alter a table.
  1831.     
  1832.    This seems to be a InnoDB bug (fixed in MySQL 3.23.50?). However, keep
  1833.    in mind that phpMyAdmin as of version 2.3.0 does not support InnoDB.
  1834.    
  1835.     [3.4] I am unable to import dumps I created with the mysqldump tool bundled
  1836.     with the MySQL server distribution.
  1837.     
  1838.    The problem is that mysqldump creates invalid comments like this:
  1839. -- MySQL dump 8.22
  1840. --
  1841. -- Host: localhost Database: database
  1842. ---------------------------------------------------------
  1843. -- Server version 3.23.54
  1844.  
  1845.    The invalid part of the code is the horizontal line made of dashes
  1846.    that appears once in every dump created with mysqldump. If you want to
  1847.    run your dump you have to turn it into valid MySQL. This means, you
  1848.    have to add a whitespace after the first to dashes of the line or add
  1849.    a # before it:
  1850.    -- -------------------------------------------------------
  1851.    or
  1852.    #---------------------------------------------------------
  1853.    
  1854.     [3.3] When using nested folders ($cfg['LeftFrameTableSeparator']) there are
  1855.     some multiple hierarchies displayed in a wrong manner?!
  1856.     
  1857.    Please note that you should not use the seperating string multiple
  1858.    times without any characters between them, or at the beginning/end of
  1859.    your table name. If you have to, think about using another
  1860.    TableSeparator or disabling that feature
  1861.    
  1862.   [4. ISPs, multi-user installations ]
  1863.   
  1864.     [4.1] I'm an ISP. Can I setup one central copy of phpMyAdmin or do I need
  1865.     to install it for each customer.
  1866.     
  1867.    Since version 2.0.3, you can setup a central copy of phpMyAdmin for
  1868.    all your users. The development of this feature was kindly sponsored
  1869.    by NetCologne GmbH. This requires a properly setup MySQL user
  1870.    management and phpMyAdmin HTTP or cookie authentication. See the
  1871.    install section on "Using HTTP authentication".
  1872.    
  1873.     [4.2] What's the preferred way of making phpMyAdmin secure against evil
  1874.     access.
  1875.     
  1876.    This depends on your system.
  1877.    If you're running a server which cannot be accessed by other people,
  1878.    it's sufficient to use the directory protection bundled with your
  1879.    webserver (with Apache you can use .htaccess files, for example).
  1880.    If other people have telnet access to your server, you should use
  1881.    phpMyAdmin's HTTP authentication feature.
  1882.    Suggestions:
  1883.      * Your config.inc.php3 file should be chmod 660.
  1884.      * All your phpMyAdmin files should be chown phpmy.apache, where
  1885.        phpmy is a user whose password is only known to you, and apache is
  1886.        the group under which Apache runs.
  1887.      * You should use PHP safe mode, to protect from other users that try
  1888.        to include your config.inc.php3 in their scripts.
  1889.        
  1890.     [4.3] I get errors about not being able to include a file in /lang or in
  1891.     /libraries.
  1892.     
  1893.    Check php.ini, or ask your sysadmin to check it. The include_path must
  1894.    contain "." somewhere in it, and open_basedir, if used, must contain
  1895.    "." and "./lang" to allow normal operation of phpMyAdmin.
  1896.    
  1897.     [4.4] phpMyAdmin always gives "Access denied" when using HTTP
  1898.     authentication.
  1899.     
  1900.    This could happen for several reasons:
  1901.      * $cfg['Servers'][$i]['controluser'] and/or
  1902.        $cfg['Servers'][$i]['controlpass'] are wrong.
  1903.      * The username/password you specify in the login-dialog are invalid.
  1904.      * You have already setup a security mechanism for the
  1905.        phpMyAdmin-directory, eg. a .htaccess file. This would interfere
  1906.        with phpMyAdmin's authentication, so remove it.
  1907.        
  1908.     [4.5] Is it possible to let users create their own databases?
  1909.     
  1910.    Starting with 2.2.5, in the user management page, you can enter a
  1911.    wildcard database name for a user (for example "joe%"), and put the
  1912.    privileges you want. For example, adding SELECT, INSERT, UPDATE,
  1913.    DELETE, CREATE, DROP, INDEX, ALTER would let a user create/manage
  1914.    his/her database(s).
  1915.    
  1916.     [4.6] How can I use the Host-based authentication additions?
  1917.     
  1918.    If you have existing rules from an old .htaccess file, you can take
  1919.    them and add a username between the 'deny'/'allow' and 'from' strings.
  1920.    Using the username wildcard of '%' would be a major benefit here if
  1921.    your installation is suited to using it. Then you can just add those
  1922.    updated lines into the $cfg['Servers'][$i]['AllowDeny']['rules']
  1923.    array.
  1924.    If you want a pre-made sample, you can try this fragment. It stops the
  1925.    'root' user from logging in from any networks other than the private
  1926.    network IP blocks.
  1927.        //block root from logging in except from the private networks
  1928.        $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
  1929.        $cfg['Servers'][$i]['AllowDeny']['rules'] = array(
  1930.            'deny root from all',
  1931.            'allow root from localhost',
  1932.            'allow root from 10.0.0.0/8',
  1933.            'allow root from 192.168.0.0/16',
  1934.            'allow root from 172.16.0.0/12',
  1935.            );
  1936.    
  1937.     [4.7] Authentication window is displayed more than once, why?
  1938.     
  1939.    This happens if you are using a URL to start phpMyAdmin which is
  1940.    different than the one set in your $cfg['PmaAbsoluteUri']. For
  1941.    example, a missing "www", or entering with an IP address while a
  1942.    domain name is defined in the config file.
  1943.    
  1944.   [5. Browsers or client OS]
  1945.   
  1946.     [5.1] I get an out of memory error, and my controls are non-functional,
  1947.     when trying to create a table with more than 14 fields.
  1948.     
  1949.    We could reproduce this problem only under Win98/98SE. Testing under
  1950.    WinNT4 or Win2K, we could easily create more than 60 fields.
  1951.    A workaround is to create a smaller number of fields, then come back
  1952.    to your table properties and add the other fields.
  1953.    
  1954.     [5.2] With Xitami 2.5b4, phpMyAdmin won't process form fields.
  1955.     
  1956.    This is not a phpMyAdmin problem but a Xitami known bug: you'll face
  1957.    it with each script/website that use forms.
  1958.    Upgrade or downgrade your Xitami server.
  1959.    
  1960.     [5.3] I have problems dumping tables with Konqueror (phpMyAdmin 2.2.2).
  1961.     
  1962.    With Konqueror 2.1.1: plain dumps, zip and GZip dumps work ok, except
  1963.    that the proposed file name for the dump is always 'tbl_dump.php'.
  1964.    Bzip2 dumps don't seem to work.
  1965.    With Konqueror 2.2.1: plain dumps work; zip dumps are placed into the
  1966.    user's temporary directory, so they must be moved before closing
  1967.    Konqueror, or else they disappear. GZip dumps give an error message.
  1968.    Testing needs to be done for Konqueror 2.2.2.
  1969.    
  1970.     [5.4] I can't use the cookie authentication mode because Internet Explorer
  1971.     never stores the cookies.
  1972.     
  1973.    MS Internet Explorer seems to be really buggy about cookies, at least
  1974.    till version 6. And thanks to Andrew Zivolup we've traced also a PHP
  1975.    4.1.1 bug in this area!
  1976.    Then, if you're running PHP 4.1.1, try to upgrade or downgrade... it
  1977.    may work!
  1978.    
  1979.     [5.5] In Internet Explorer 5.0, I get JavaScript errors when browsing my
  1980.     rows.
  1981.     
  1982.    Upgrade to at least Internet Explorer 5.5 SP2.
  1983.    
  1984.     [5.6] In Internet Explorer 5.0, 5.5 or 6.0, I get an error (like "Page not
  1985.     found") when trying to modify a row in a table with many fields, or with a
  1986.     text field
  1987.     
  1988.    Your table neither have a primary key nor an unique one, so we must
  1989.    use a long URL to identify this row. There is a limit on the length of
  1990.    the URL in those browsers, and this not happen in Netscape, for
  1991.    example. The workaround is to create a primary or unique key, or use
  1992.    another browser.
  1993.    
  1994.     [5.7] I refresh (reload) my browser, and come back to the welcome page.
  1995.     
  1996.    Some browsers support right-clicking into the frame you want to
  1997.    refresh, just do this in the right frame.
  1998.    
  1999.     [5.8] With Mozilla 0.9.7 I have problems sending a query modified in the
  2000.     query box.
  2001.     
  2002.    Looks like a Mozilla bug: 0.9.6 was OK. We will keep an eye on future
  2003.    Mozilla versions.
  2004.    
  2005.     [5.9] With Mozilla 0.9.? to 1.0 and Netscape 7.0-PR1 I can't type a
  2006.     whitespace in the SQL-Query edit area: the page scrolls down.
  2007.     
  2008.    This is a Mozilla bug (see bug #26882 at BugZilla).
  2009.    
  2010.     [5.10] With Netscape 4.75 I get empty rows between each row of data in a
  2011.     CSV exported file.
  2012.     
  2013.    This is a known Netscape 4.75 bug: it adds some line feeds when
  2014.    exporting data in octet-stream mode. Since we can't detect the
  2015.    specific Netscape version, we cannot workaround this bug.
  2016.    
  2017.     [5.11] Extended-ASCII characters like German umlauts are displayed wrong.
  2018.     
  2019.    Please ensure that you have set your browser's character set to the
  2020.    one of the language file you have selected on phpMyAdmin's start page.
  2021.    Alternatively, you can try the auto detection mode that is supported
  2022.    by the recent versions of the most browsers.
  2023.    
  2024.     [5.12] Apple OS X: Safari browser changes special characters to "?".
  2025.     
  2026.    This issue has been reported by a OS X user, who adds that Chimera,
  2027.    Netscape and Mozilla do not have this problem.
  2028.    
  2029.     [5.13] With Internet Explorer 5.5 or 6, and HTTP authentication type, I
  2030.     cannot manage two servers: I login to the first one, then the other one,
  2031.     but if I switch back to the first, I have to login on each operation.
  2032.     
  2033.    This is a bug in Internet Explorer, other browsers do not behave this
  2034.    way.
  2035.    
  2036.     [5.14] Using Opera6, I can manage to get to the authentification, but
  2037.     nothing happens after that, only a blank screen.
  2038.     
  2039.    Having $cfg['QueryFrameJS'] set to TRUE, this leads to a bug in
  2040.    Opera6, because it is not able to interpret frameset definitiions
  2041.    written by JavaScript. Please upgrade to Opera7 at least.
  2042.    
  2043.   [6. Using phpMyAdmin]
  2044.   
  2045.     [6.1] I can't insert new rows into a table / I can't create a table - MySQL
  2046.     brings up a SQL-error.
  2047.     
  2048.    Examine the SQL error with care. Often the problem is caused by
  2049.    specifying a wrong field-type.
  2050.    Common errors include:
  2051.      * Using VARCHAR without a size argument
  2052.      * Using TEXT or BLOB with a size argument
  2053.        
  2054.    Also, look at the syntax chapter in the MySQL manual to confirm that
  2055.    your syntax is correct.
  2056.    
  2057.     [6.2] When I create a table, I click the Index checkbox for 2 fields and
  2058.     phpMyAdmin generates only one index with those 2 fields.
  2059.     
  2060.    In phpMyAdmin 2.2.0 and 2.2.1, this is the way to create a
  2061.    multi-fields index. If you want two indexes, create the first one when
  2062.    creating the table, save, then display the table properties and click
  2063.    the Index link to create the other index.
  2064.    
  2065.     [6.3] How can I insert a null value into my table?
  2066.     
  2067.    Since version 2.2.3, you have a checkbox for each field that can be
  2068.    null. Before 2.2.3, you had to enter "null", without the quotes, as
  2069.    the field's value.
  2070.    
  2071.     [6.4] How can I backup my database or table?
  2072.     
  2073.    Click on a database or table name in the left frame, the properties
  2074.    will be displayed. Then on the menu, click "Export", you can dump the
  2075.    structure, the data, or both. This will generate standard SQL
  2076.    statements that can be used to recreate your database/table.
  2077.    You will need to choose "Save as file", so that phpMyAdmin can
  2078.    transmit the resulting dump to your station. Depending on your PHP
  2079.    configuration, you will see options to compress the dump. See also the
  2080.    $cfg['ExecTimeLimit'] configuration variable.
  2081.    For additional help on this subject, look for the word "dump" in this
  2082.    document.
  2083.    
  2084.     [6.5] How can I restore (upload) my database or table using a dump? How can
  2085.     I run a ".sql" file.
  2086.     
  2087.    Click on a database name in the left frame, the properties will be
  2088.    local displayed. Then in the "Run SQL query" section, type in your
  2089.    dump filename, or use the Browse button. Then click Go.
  2090.    For additional help on this subject, look for the word "upload" in
  2091.    this document.
  2092.    
  2093.     [6.6] How can I use the relation table in Query-by-example?
  2094.     
  2095.    Here is an example with the tables persons, towns and countries, all
  2096.    located in the database mydb. If you don't have a PMA_relation table,
  2097.    create it as explained in the configuration section. Then create the
  2098.    example tables:
  2099.         CREATE TABLE REL_countries (
  2100.           country_code char(1) NOT NULL default '',
  2101.           description varchar(10) NOT NULL default '',
  2102.           PRIMARY KEY (country_code)
  2103.         ) TYPE=MyISAM;
  2104.         INSERT INTO REL_countries VALUES ('C', 'Canada');
  2105.         CREATE TABLE REL_persons (
  2106.           id tinyint(4) NOT NULL auto_increment,
  2107.           person_name varchar(32) NOT NULL default '',
  2108.           town_code varchar(5) default '0',
  2109.           country_code char(1) NOT NULL default '',
  2110.           PRIMARY KEY (id)
  2111.         ) TYPE=MyISAM;
  2112.         INSERT INTO REL_persons VALUES (11, 'Marc', 'S', '');
  2113.         INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C');
  2114.         CREATE TABLE REL_towns (
  2115.           town_code varchar(5) NOT NULL default '0',
  2116.           description varchar(30) NOT NULL default '',
  2117.           PRIMARY KEY (town_code)
  2118.         ) TYPE=MyISAM;
  2119.         INSERT INTO REL_towns VALUES ('S', 'Sherbrooke');
  2120.         INSERT INTO REL_towns VALUES ('M', 'MontrΘal');
  2121.    To setup appropriate links and display information:
  2122.      * on table "REL_persons" click Structure, then Relation view
  2123.      * in Links, for "town_code" choose "REL_towns->code"
  2124.      * in Links, for "country_code" choose "REL_countries->country_code"
  2125.      * on table "REL_towns" click Structure, then Relation view
  2126.      * in "Choose field to display", choose "description"
  2127.      * repeat the two previous steps for table "REL_countries"
  2128.        
  2129.    Then test like this:
  2130.      * Click on your db name in the left frame
  2131.      * Choose "Query"
  2132.      * Use tables: persons, towns, countries
  2133.      * Click "Update query"
  2134.      * In the fields row, choose persons.person_name and click the "Show"
  2135.        tickbox
  2136.      * Do the same for towns.description and countries.descriptions in
  2137.        the other 2 columns
  2138.      * Click "Update query" and you will see in the query box that the
  2139.        correct joins have been generated
  2140.      * Click "Submit query"
  2141.        
  2142.     [6.7] How can I use the "display field" feature?
  2143.     
  2144.    Starting from the previous example, create the PMA_table_info as
  2145.    explained in the configuration section, then browse your persons
  2146.    table, and move the mouse over a town code or country code.
  2147.    See also FAQ 6.21 for an additionnal feature that "display field"
  2148.    enables: drop-down list of possible values.
  2149.    
  2150.     [6.8] How can I produce a PDF schema of my database?
  2151.     
  2152.    First you have to fill the "relation", "table_coords" and "pdf_pages"
  2153.    configuration variables.
  2154.    Then, think about your schema layout: which tables will go on which
  2155.    pages.
  2156.      * Click on your db name in the left frame
  2157.      * Choose "Structure" in the navigation on top
  2158.      * Choose "Edit PDF Pages" which should be somewhere at the bottom of
  2159.        the page
  2160.      * Enter the name for a first pdf page and submit (you can also use
  2161.        the "Automatic layout", which will place on your page all the
  2162.        tables that are linked)
  2163.      * Choose this page to edit
  2164.      * Now add a table you want to show on this page and its coordinates
  2165.        and submit
  2166.        First you will have to guess those coordinates of course, so just
  2167.        expect to have an area of about 297 * 210 and put the tables
  2168.        coordinates somewhere in there, you will be able to have a look at
  2169.        what happened and change them later.
  2170.        For example, x=100 and y=200 means that the table will be at 200
  2171.        mm down and 100 mm right from the upper left corner.
  2172.        Actually if you have a width of more than 300 or a height of more
  2173.        than 200 then it will automatically be scaled but 200*100 is a
  2174.        good start to have an idea of what coordinates to use.
  2175.      * There is also a visual editor (scratchboard) available, see the
  2176.        explanation at the $cfg['WYSIWYG-PDF'] section.
  2177.      * After every table you submitted you will have the possibility to
  2178.        submit more tables
  2179.      * When you have entered enough tables Click on your db name in the
  2180.        left frame again
  2181.      * Now, again at the bottom of the page you should be able to choose
  2182.        "Display PDF schema"
  2183.        For testing it might be useful to show the grid as well, so you
  2184.        can see the coordinates used.
  2185.        Maybe also choose color and submit.
  2186.      * Save the file he will offer you to something like Schema.pdf
  2187.        (Internet Explorer has some bug there which might make it offer it
  2188.        without an extension. Under Windows it is important to have the
  2189.        extension ".pdf", under other OSes you should be fine just saving
  2190.        the file under the name it offers).
  2191.        
  2192.     [6.9] phpMyAdmin is changing the type of one of my columns!
  2193.     
  2194.    No, it's MySQL that is doing silent column type changing.
  2195.    
  2196.     [6.10] When creating a privilege, what happens with underscores in the
  2197.     database name?
  2198.     
  2199.    If you do not put a backslash before the underscore, this is a
  2200.    wildcard grant, and the underscore means "any character". So, if the
  2201.    database name is "john_db", the user would get rights to john1db,
  2202.    john2db...
  2203.    If you put a backslash before the underscore, it means that the
  2204.    database name will have a real underscore.
  2205.    
  2206.     [6.11] What is the curious symbol ° in the statistics pages?
  2207.     
  2208.    It means "average".
  2209.    
  2210.     [6.12] I want to understand some Export options.
  2211.     
  2212.    "Complete inserts" adds the column names on every INSERT command, for
  2213.    better documentation (but resulting file is bigger).
  2214.    "Extended inserts" provides a shorter dump file by using only once the
  2215.    INSERT verb and the table name.
  2216.    "Enclose table and field names with backquotes" ensures that field and
  2217.    table names formed with special characters are protected.
  2218.    "Add AUTO_INCREMENT value" ensures, that AUTO_INCREMENT value (if any)
  2219.    will be included in backup.
  2220.    "Add into comments" includes column comments, relations and MIME types
  2221.    set in the PMA-DB in the dump as SQL comments (/* xxx */).
  2222.    
  2223.     [6.13] I would like to create a database with a dot in its name.
  2224.     
  2225.    This is a bad idea, because in MySQL the syntax "database.table" is
  2226.    the normal way to reference a database and table name. Worse, MySQL
  2227.    will usually let you create a database with a dot, but then you cannot
  2228.    work with it, nor delete it.
  2229.    
  2230.     [6.14] How do I set up the SQL Validator?
  2231.     
  2232.    To use it, you need a very recent version of PHP, 4.3.0 recommended,
  2233.    with XML, PCRE and PEAR support. On your system command line, run
  2234.    "pear install Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME SOAP"
  2235.    to get the necessary PEAR modules for usage.
  2236.    If you use it, you should be aware that any SQL statement you submit
  2237.    will be stored anonymously (database/table/column names, strings,
  2238.    numbers replaced with generic values). The Mimer SQL Validator itself,
  2239.    is ⌐ 2001 Upright Database Technology. We utilize it as free SOAP
  2240.    service.
  2241.    
  2242.     [6.15] I want to add a BLOB field and put an index on it, but MySQL says
  2243.     "BLOB column '...' used in key specification without a key length".
  2244.     
  2245.    The right way to do this, is to create the field without any indexes,
  2246.    then display the table structure and use the "Create an index" dialog.
  2247.    On this page, you will be able to choose your BLOB field, and set a
  2248.    size to the index, which is the condition to create an index on a BLOB
  2249.    field.
  2250.    
  2251.     [6.16] How can I simply move in page with plenty editing fields?
  2252.     
  2253.    You can use Ctrl+arrows for moving on most pages with plenty editing
  2254.    fields (table structure changes, row editing, etc.) (must be anabled
  2255.    in configuration - see. $cfg['CtrlArrowsMoving']). You can also have a
  2256.    look at the directive $cfg['DefaultPropDisplay'] ('vertical') and see
  2257.    if this eases up editing for you.
  2258.    
  2259.     [6.17] Transformations: I can't enter my own mimetype! WTF is this feature
  2260.     then useful for?
  2261.     
  2262.    Slow down :). Defining mimetypes is of no use, if you can't put
  2263.    transformations on them. Otherwise you could just put a comment on the
  2264.    field. Because entering your own mimetype will cause serious syntax
  2265.    checking issues and validation, this introduces a high-risk
  2266.    false-user-input situation. Instead you have to initialize mimetypes
  2267.    using functions or empty mimetype definitions.
  2268.    Plus, you have a whole overview of available mimetypes. Who knows all
  2269.    those mimetypes by heart so he/she can enter it at will?
  2270.    
  2271.     [6.18] Bookmarks: Where can I store bookmarks? Why can't I see any
  2272.     bookmarks below the query box? What is this variable for?
  2273.     
  2274.    Any query you have executed can be stored as a bookmark on the page
  2275.    where the results are displayed. You will find a button labeled
  2276.    'Bookmark this query' just at the end of the page.
  2277.    As soon as you have stored a bookmark, it is related to the database
  2278.    you run the query on. You can now access a bookmark dropdown on each
  2279.    page, the query box appears on for that database.
  2280.    Since phpMyAdmin 2.5.0 you are also able to store variables for the
  2281.    bookmarks. Just use the string /*[VARIABLE]*/ anywhere in your query.
  2282.    Everything which is put into the value input box on the query box page
  2283.    will replace the string "/*[VARIABLE]*/" in your stored query. Just be
  2284.    aware of that you HAVE to create a valid query, otherwise your query
  2285.    won't be even able to be stored in the database.
  2286.    Also remember, that everything else inside the /*[VARIABLE]*/ string
  2287.    for your query will remain the way it is, but will be stripped of the
  2288.    /**/ chars. So you can use:
  2289.    /*, [VARIABLE] AS myname */
  2290.    which will be expanded to
  2291.    , VARIABLE as myname
  2292.    in your query, where VARIABLE is the string you entered in the input
  2293.    box. If an empty string is provided, no replacements are made.
  2294.    A more complex example. Say you have stored this query:
  2295.    SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE
  2296.    '%[VARIABLE]%' */
  2297.    Say, you now enter "phpMyAdmin" as the variable for the stored query,
  2298.    the full query will be:
  2299.    SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE
  2300.    '%phpMyAdmin%'
  2301.    You can use multiple occurences of /*[VARIABLE]*/ in a single query.
  2302.    NOTE THE ABSENCE OF SPACES inside the "/**/" construct. Any spaces
  2303.    inserted there will be later also inserted as spaces in your query and
  2304.    may lead to unexpected results especially when using the variable
  2305.    expansion inside of a "LIKE ''" expression.
  2306.    Your initial query which is going to be stored as a bookmark has to
  2307.    yield at least one result row so you can store the bookmark. You may
  2308.    have that to work around using well positioned "/**/" comments.
  2309.    
  2310.     [6.19] How can I create simple LaTeX document to include exported table?
  2311.     
  2312.    You can simply include table in your LaTeX documents, minimal sample
  2313.    document should look like following one (assuming you have table
  2314.    exported in file table.tex):
  2315. \documentclass{article}
  2316. \usepackage{longtable}
  2317.  
  2318. \begin{document}
  2319.  
  2320. \include{table}
  2321.  
  2322. \end{document}
  2323.  
  2324.     [6.20] In MySQL 4, I see a lot of databases which are not mine, and cannot
  2325.     access them.
  2326.     
  2327.    Upgrading to MySQL 4 usually gives users a global privilege: CREATE
  2328.    TEMPORARY TABLES. This privilege also enables users to see all the
  2329.    database names. See this bug report.
  2330.    So if your users do not need this privilege, you can remove it and
  2331.    their databases list will shorten.
  2332.    
  2333.     [6.21] In edit/insert mode, how can I see a list of possible values for a
  2334.     field, based on some foreign table?
  2335.     
  2336.    You have to setup appropriate links between the tables, and also setup
  2337.    the "display field" in the foreign table. See FAQ 6.6 for an example.
  2338.    Then, if there are 200 values or less in the foreign table, a
  2339.    drop-down list of values will be available.
  2340.    
  2341.   [7. phpMyAdmin project]
  2342.   
  2343.     [7.1] I have found a bug. How do I inform developers?
  2344.     
  2345.    Our Bug Tracker is located at
  2346.    http://sourceforge.net/projects/phpmyadmin/ under the Bugs section.
  2347.    But please first discuss your bug with other users:
  2348.    http://sourceforge.net/projects/phpmyadmin/ (and choose Forums)
  2349.    
  2350.     [7.2] I want to translate the messages to a new language or upgrade an
  2351.     existing language, where do I start?
  2352.     
  2353.    Always use the current CVS version of your language file. For a new
  2354.    language, start from english-iso-8859-1.inc.php3. If you don't know
  2355.    how to get the CVS version, please ask one of the developers.
  2356.    Please note that we try not to use HTML entities like é in the
  2357.    translations, since we define the right character set in the file.
  2358.    With HTML entities, the text on JavaScript messages would not display
  2359.    correctly. However there are some entities that need to be there, for
  2360.    quotes ,non-breakable spaces, ampersands, less than, greater than.
  2361.    You can then put your translations, as a zip file to avoid losing
  2362.    special characters, on the sourceforge.net translation tracker.
  2363.    It would be a good idea to subscribe to the phpmyadmin-translators
  2364.    mailing list, because this is where we ask for translations of new
  2365.    messages.
  2366.    
  2367.     [7.3] I would like to help out with the development of phpMyAdmin. How
  2368.     should I proceed?
  2369.     
  2370.    The following method is preferred for new developers:
  2371.     1. fetch the current CVS tree over anonymous CVS:
  2372.        cvs
  2373.        -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmy
  2374.        admin login
  2375.        [Password: simply press the Enter key]
  2376.        cvs -z3
  2377.        -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmy
  2378.        admin checkout phpMyAdmin
  2379.        [This will create a new sub-directory named phpMyAdmin]
  2380.     2. add your stuff
  2381.     3. put the modified files (tar'ed and gzip'ed) inside the patch
  2382.        tracker of the phpMyAdmin SourceForge account.
  2383.        
  2384.    Write access to the CVS tree is granted only to experienced developers
  2385.    who have already contributed something useful to phpMyAdmin.
  2386.    Also, have a look at the Developers section.
  2387.    
  2388.   [8. Security ]
  2389.   
  2390.     [8.1] Security alert, dated 2003-06-18.
  2391.     
  2392.    Last update of this FAQ: 2003-07-22.
  2393.    The phpMyAdmin development team received notice of this security
  2394.    alert: http://www.securityfocus.com/archive/1/325641.
  2395.    The team regrets that the author did not communicate with us before
  2396.    sending this alert. However, here is our current reply to the points
  2397.    mentionned:
  2398.      * "Directory transversal attack"
  2399.        This problem had been fixed in version 2.5.0, even if the author
  2400.        reports the 2.5.2 development version as vulnerable, which we
  2401.        could not reproduce.
  2402.      * "Remote local file retrieving"
  2403.        This is a misleading title, as the author tells in his text: "Note
  2404.        that you can't request files ( only dirs )".
  2405.      * "Remote internal directory listing"
  2406.        It was possible to retrieve the list of phpMyAdmin's directory
  2407.        (which we doubt can cause any damage), but we fixed this in the
  2408.        2.5.2 version.
  2409.      * "XSS and Path disclosures"
  2410.        Most of the XSS problems have been fixed in version 2.5.0. The
  2411.        rest have been fixed in the 2.5.2 version.
  2412.        We believe that the Path disclosures problems have also been fixed
  2413.        in version 2.5.2.
  2414.      * "Information encoding weakness"
  2415.        We believe that an exploit for this weakness would be difficult to
  2416.        achieve. However version 2.5.2 now encrypts the password with the
  2417.        well-known blowfish algorithm.
  2418.        
  2419. Developers Information
  2420.  
  2421.    phpMyAdmin is Open Source, so you're invited to contribute to it. Many
  2422.    great features have been written by other people and you too can help
  2423.    to make phpMyAdmin a useful tool.
  2424.    
  2425.    If you're planning to contribute source, please read the following
  2426.    information:
  2427.      * All files include header.inc.php3 (layout),
  2428.        libraries/common.lib.php3 (common functions) and config.inc.php3.
  2429.        All configuration data belongs in config.inc.php3. Please keep it
  2430.        free from other code.
  2431.        Commonly used functions should be added to
  2432.        libraries/common.lib.php3 and more specific ones may be added
  2433.        within a library stored into the libraries sub-directory.
  2434.      * Obviously, you're free to use whatever coding style you want. But
  2435.        please try to keep your code as simple as possible: beginners are
  2436.        using phpMyAdmin as an example application.
  2437.        As far as possible, we want the scripts to be XHTML1.0 and CSS2
  2438.        compliant on one hand, they fit the PEAR coding standards on the
  2439.        other hand. Please pay attention to this.
  2440.      * Please try to keep up the file-naming conventions. Table-related
  2441.        stuff goes to tbl_*.php3, db-related code to db_*.php3,
  2442.        server-related tools to server_*.php3 and so on.
  2443.      * Please don't use verbose strings in your code, instead add the
  2444.        string (at least) to english-iso-8859-1.inc.php3 and print() it
  2445.        out.
  2446.      * If you want to be really helpful, write an entry for the
  2447.        ChangeLog.
  2448.      * The DBG extension (PHP Debugger DBG) is now supported by
  2449.        phpMyAdmin for developers to better debug and profile their code.
  2450.        Please see the $cfg['DBG']* configuration options for more
  2451.        information.
  2452.        This is in memoriam of the Space Shuttle Columbia (STS-107) which
  2453.        was lost during its re-entry into Earth's atmosphere and in memory
  2454.        of the brave men and women who gave their lives for the people of
  2455.        Earth.
  2456.        
  2457. Credits
  2458.  
  2459.  
  2460. phpMyAdmin - Credits
  2461. ====================
  2462.  
  2463. CREDITS, in chronological order
  2464. -------------------------------
  2465.  
  2466. - Tobias Ratschiller <tobias.ratschiller_at_maguma.com>
  2467.     * creator of the phpmyadmin project
  2468.     * maintainer from 1998 to summer 2000
  2469.  
  2470. - Marc Delisle <DelislMa_at_CollegeSherbrooke.qc.ca>
  2471.     * multi-language version
  2472.     * various fixes and improvements
  2473.     * project co-administrator
  2474.  
  2475. - Olivier Mⁿller <om_at_omnis.ch>
  2476.     * started SourceForge phpMyAdmin project in March 2001
  2477.     * sync'ed different existing CVS trees with new features and bugfixes
  2478.     * multi-language improvements, dynamic language selection
  2479.     * current project maintainer
  2480.     * many bugfixes and improvements
  2481.  
  2482. - Lo∩c Chapeaux <lolo_at_phpheaven.net>
  2483.     * rewrote and optimized javascript, DHTML and DOM stuff
  2484.     * rewrote the scripts so they fit the PEAR coding standards and
  2485.       generate XHTML1.0 and CSS2 compliant codes
  2486.     * improved the language detection system
  2487.     * many bugfixes and improvements
  2488.  
  2489. - Robin Johnson <robbat2_at_users.sourceforge.net>
  2490.     * database maintence controls
  2491.     * table type code
  2492.     * Host authentication IP Allow/Deny
  2493.     * DB-based configuration (Not completed)
  2494.     * SQL parser
  2495.     * SQL validator
  2496.     * many bugfixes and improvements
  2497.  
  2498. - Armel Fauveau <armel.fauveau_at_globalis-ms.com>
  2499.     * bookmarks feature
  2500.     * multiple dump feature
  2501.     * gzip dump feature
  2502.     * zip dump feature
  2503.  
  2504. - Geert Lund <glund_at_silversoft.dk>
  2505.     * various fixes
  2506.     * moderator of the phpMyAdmin users forum at phpwizard.net
  2507.  
  2508. - Korakot Chaovavanich <korakot_at_iname.com>
  2509.     * "insert as new row" feature
  2510.  
  2511. - Pete Kelly <webmaster_at_trafficg.com>
  2512.     * rewrote and fix dump code
  2513.     * bugfixes
  2514.  
  2515. - Steve Alberty <alberty_at_neptunlabs.de>
  2516.     * rewrote dump code for PHP4
  2517.     * mySQL table statistics
  2518.     * bugfixes
  2519.  
  2520. - Benjamin Gandon <gandon_at_isia.cma.fr>
  2521.     * main author of the version 2.1.0.1
  2522.     * bugfixes
  2523.  
  2524. - Alexander M. Turek <derrabus_at_gmx.de>
  2525.     * XML exports
  2526.     * MySQL 4 related features
  2527.     * various features and fixes
  2528.     * German language file updates
  2529.  
  2530. - Mike Beck <mike.beck_at_ibmiller.de>
  2531.     * automatic joins in QBE
  2532.     * links column in printview
  2533.     * Relation view
  2534.  
  2535. - Michal Cihar <nijel_at_users.sourceforge.net>
  2536.     * enhanced index creation/display feature
  2537.     * feature to use a different charset for HTML than for MySQL
  2538.     * Czech language file updates
  2539.  
  2540. - Christophe GeschΘ from the "MySQL Form Generator for PHPMyAdmin"
  2541.   (http://sourceforge.net/projects/phpmysqlformgen/)
  2542.     * suggested the patch for multiple table printviews
  2543.  
  2544. - Garvin Hicking <me_at_supergarv.de>
  2545.     * built the patch for vertical display of table rows
  2546.     * built the Javascript based Query window + SQL history
  2547.     * Improvement of column/db comments
  2548.     * (MIME)-Transformations for columns
  2549.     * Use custom alias names for Databases in left frame
  2550.     * hierarchical/nested table display
  2551.     * PDF-scratchboard for WYSIWYG-distribution of PDF relations
  2552.     * new icon sets
  2553.     * vertical display of column properties page
  2554.     * some bugfixes, features, support, german language additions
  2555.  
  2556. - Yukihiro Kawada <kawada_at_den.fujifilm.co.jp>
  2557.     * japanese kanji encoding conversion feature
  2558.  
  2559. - Piotr Roszatycki <d3xter_at_users.sourceforge.net> and Dan Wilson
  2560.     * the Cookie authentication mode
  2561.  
  2562. - Axel Sander <n8falke_at_users.sourceforge.net>
  2563.     * table relation-links feature
  2564.  
  2565. - Maxime Delorme <delorme.maxime_at_free.fr>
  2566.     * PDF schema output, thanks also to Olivier Plathey for the
  2567.       "FPDF" library (see http://www.fpdf.org/).
  2568.  
  2569. - Olof Edlund <olof.edlund_at_upright.se>
  2570.     * SQL validator server
  2571.  
  2572. - Ivan R. Lanin <ivanlanin_at_users.sourceforge.net>
  2573.     * phpMyAdmin logo
  2574.  
  2575. - Mike Cochrane <mike_at_graftonhall.co.nz>
  2576.     * blowfish library from the Horde project
  2577.  
  2578. And also to the following people who have contributed minor changes,
  2579. enhancements, bugfixes or support for a new language since version 2.1.0:
  2580.  
  2581. Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
  2582. PΘter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow,
  2583. Mats Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas KlΣger,
  2584. Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, Andreas Pauley,
  2585. Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval Sarna,
  2586. www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun, Peter Svec,
  2587. Michael Tacelosky, Rachim Tamsjadi, Kositer Uros,
  2588. Luφs V., Martijn W. van der Lee,
  2589. Algis Vainauskas, Daniel Villanueva, Vinay, Ignacio Vazquez-Abrams, Chee Wai,
  2590. Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas, "Manuzhai".
  2591.  
  2592.  
  2593. Original Credits of Version 2.1.0
  2594. ---------------------------------
  2595.  
  2596.     This work is based on Peter Kuppelwieser's MySQL-Webadmin. It was his idea
  2597.     to create a web-based interface to MySQL using PHP3. Although I have not
  2598.     used any of his source-code, there are some concepts I've borrowed from
  2599.     him. phpMyAdmin was created because Peter told me he wasn't going to
  2600.     further develop his (great) tool.
  2601.     Thanks go to
  2602.     - Amalesh Kempf <ak-lsml_at_living-source.com> who contributed the
  2603.       code for the check when dropping a table or database. He also suggested
  2604.       that you should be able to specify the primary key on tbl_create.php3. To
  2605.       version 1.1.1 he contributed the ldi_*.php3-set (Import text-files) as
  2606.       well as a bug-report. Plus many smaller improvements.
  2607.     - Jan Legenhausen <jan_at_nrw.net>: He made many of the changes that
  2608.       were introduced in 1.3.0 (including quite significant ones like the
  2609.       authentication). For 1.4.1 he enhanced the table-dump feature. Plus
  2610.       bug-fixes and help.
  2611.     - Marc Delisle <DelislMa_at_CollegeSherbrooke.qc.ca> made phpMyAdmin
  2612.       language-independent by outsourcing the strings to a separate file. He
  2613.       also contributed the French translation.
  2614.     - Alexandr Bravo <abravo_at_hq.admiral.ru> who contributed
  2615.       tbl_select.php3, a feature to display only some fields from a table.
  2616.     - Chris Jackson <chrisj_at_ctel.net> added support for MySQL
  2617.       functions in tbl_change.php3. He also added the
  2618.       "Query by Example" feature in 2.0.
  2619.     - Dave Walton <walton_at_nordicdms.com> added support for multiple
  2620.       servers and is a regular contributor for bug-fixes.
  2621.     - Gabriel Ash <ga244_at_is8.nyu.edu> contributed the random access
  2622.       features for 2.0.6.
  2623.     The following people have contributed minor changes, enhancements, bugfixes
  2624.     or support for a new language:
  2625.     Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas Kleemann,
  2626.     Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel Piankov,
  2627.     Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, Jannis Hermanns,
  2628.     G. Wieggers.
  2629.  
  2630.     And thanks to everyone else who sent me email with suggestions, bug-reports
  2631.     and or just some feedback.
  2632.  
  2633.                                         Valid XHTML 1.0!      Valid CSS! 
  2634.